{"record":{"id":"c3eb39bf6a048723","repo":"HelloZeroNet/ZeroNet","slug":"file-not-readable-at-position-s","errorCode":null,"errorMessage":"File not readable at position: %s","messagePattern":"File not readable at position: (.+?)","errorType":"exception","errorClass":"RequestError","httpStatus":null,"severity":"error","filePath":"src/File/FileRequest.py","lineNumber":230,"sourceCode":"        if not site or not site.isServing():  # Site unknown or not serving\n            self.response({\"error\": \"Unknown site\"})\n            self.connection.badAction(5)\n            return False\n        try:\n            file_path = site.storage.getPath(params[\"inner_path\"])\n            if streaming:\n                file_obj = site.storage.open(params[\"inner_path\"])\n            else:\n                file_obj = Msgpack.FilePart(file_path, \"rb\")\n\n            with file_obj as file:\n                file.seek(params[\"location\"])\n                read_bytes = params.get(\"read_bytes\", FILE_BUFF)\n                file_size = os.fstat(file.fileno()).st_size\n\n                if file_size > read_bytes:  # Check if file is readable at current position (for big files)\n                    if not self.isReadable(site, params[\"inner_path\"], file, params[\"location\"]):\n                        raise RequestError(\"File not readable at position: %s\" % params[\"location\"])\n                else:\n                    if params.get(\"file_size\") and params[\"file_size\"] != file_size:\n                        self.connection.badAction(2)\n                        raise RequestError(\"File size does not match: %sB != %sB\" % (params[\"file_size\"], file_size))\n\n                if not streaming:\n                    file.read_bytes = read_bytes\n\n                if params[\"location\"] > file_size:\n                    self.connection.badAction(5)\n                    raise RequestError(\"Bad file location\")\n\n                if streaming:\n                    back = {\n                        \"size\": file_size,\n                        \"location\": min(file.tell() + read_bytes, file_size),\n                        \"stream_bytes\": min(read_bytes, file_size - params[\"location\"])\n                    }","sourceCodeStart":212,"sourceCodeEnd":248,"githubUrl":"https://github.com/HelloZeroNet/ZeroNet/blob/454c0b2e7e000fda7000cba49027541fbf327b96/src/File/FileRequest.py#L212-L248","documentation":"RequestError raised in handleGetFile when isReadable() fails for a large file: the requested position (params['location']) falls in a range the server refuses to read (e.g. beyond the allowed streaming window or invalid seek offset for the served file). It is a per-request guard protecting big-file reads.","triggerScenarios":"Thrown at src/File/FileRequest.py:230 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Client should reset its download location to a valid, previously verified offset and retry","Ensure params['location'] is within the file's actual size before requesting","Catch RequestError in the request handler and return an error response to the peer instead of crashing"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"454c0b2e7e000fda7000cba49027541fbf327b96","analyzedAt":"2026-09-02T19:46:57.278Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T02:17:09.455Z"}