{"record":{"id":"db61c5af73bd63cf","repo":"XX-net/XX-Net","slug":"checksum-error-s-s","errorCode":null,"errorMessage":"checksum error:%s %s","messagePattern":"checksum error:(.+?) (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"code/default/x_tunnel/local/proxy_session.py","lineNumber":1071,"sourceCode":"                # xlog.debug(\"target roundtrip: %d, on_road: %d\", self.target_on_roads, self.on_road_num)\n\n                if rtt > 8000:\n                    xlog.warn(\"rtt:%d speed:%d trace:%s\", rtt, speed, response.worker.get_trace())\n                    xlog.warn(\"task trace:%s\", response.task.get_trace())\n                    g.stat[\"slow_roundtrip\"] += 1\n\n                data = payload.get_buf(data_len)\n                ack = payload.get_buf(ack_len)\n                rcvd_no_list = payload.get_buf(rcvd_no_len)\n                sent_no_list = payload.get_buf(sent_no_len)\n                unack_snd_sn = payload.get_buf(unack_snd_sn_len)\n                ext = payload.get_buf(ext_len)\n\n                if len(payload) > 32:\n                    checksum_str = utils.to_str(payload.get(32).tobytes())\n                    checksum = hashlib.md5(bytes(content[:-32])).hexdigest()\n                    if checksum != checksum_str:\n                        xlog.warn(\"checksum error:%s %s\", checksum_str, checksum)\n\n                        data_info[\"stat\"] = \"timeout\"\n                        continue\n\n                self.last_receive_time = time.time()\n\n                with self.lock:\n                    if transfer_no in self.transfer_list:\n                        del self.transfer_list[transfer_no]\n\n                self.round_trip_process(data, ack, rcvd_no_list, sent_no_list, unack_snd_sn, server_time)\n                self.check_upload_not_acked(server_time)\n\n                if self.on_road_num + 1 < self.target_on_roads:\n                    self.wait_queue.notify()\n\n                self.wait_queue.notify()\n                return","sourceCodeStart":1053,"sourceCodeEnd":1089,"githubUrl":"https://github.com/XX-net/XX-Net/blob/cfa5bc17b67676e467f37ec50766127e0ab5f0aa/code/default/x_tunnel/local/proxy_session.py#L1053-L1089","documentation":"MD5 integrity check failed: the checksum in the last 32 bytes of the received content does not match md5(content[:-32]). The transfer is marked 'timeout' and retried later; it is not fatal to the session.","triggerScenarios":"Response body corrupted in transit (truncation, bit flips), or a server/payload format change where the trailing 32-byte checksum assumption no longer holds.","commonSituations":"Unstable connections, aggressive DPI/middlebox tampering, proxy rewrites, or client/server version mismatch changing frame layout.","solutions":["Retry — single checksum mismatch only fails that transfer","Improve connection stability / try a different network path","Update XX-Net to match server framing version","If persistent for all responses, capture traffic and report framing bug"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat checksum-failed transfers as retries, not fatal errors","Maintain stable network paths to reduce corruption","Update client when server framing changes"],"tags":["x-tunnel","checksum","integrity","corruption"],"backgroundTag":"checksum-mismatch","analyzedSha":"cfa5bc17b67676e467f37ec50766127e0ab5f0aa","analyzedAt":"2026-08-27T19:28:28.225Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}