{"record":{"id":"06d2389a14b3b621","repo":"XX-net/XX-Net","slug":"put-send-data-s-conn-d-seq-d-next-d","errorCode":null,"errorMessage":"put_send_data %s conn:%d seq:%d next:%d","messagePattern":"put_send_data (.+?) conn:(.+?) seq:(.+?) next:(.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"code/default/x_tunnel/local/base_container.py","lineNumber":712,"sourceCode":"            # record TCP connection time\n            # conn_time = time.time() - start_time\n            # self.xlog.debug(\"tcp conn %s %s time:%d\", host, ip, conn_time * 1000)\n\n            return sock, True\n        except Exception as e:\n            conn_time = int((time.time() - start_time) * 1000)\n            self.xlog.debug(\"tcp conn host:%s %s:%d fail t:%d %r\", host, ip, port, conn_time, e)\n            if sock:\n                sock.close()\n            return e, False\n\n    def put_cmd_data(self, data):\n        if not self.running:\n            return\n\n        seq = struct.unpack(\"<I\", data.get(4))[0]\n        if seq < self.next_cmd_seq:\n            self.xlog.warn(\"put_send_data %s conn:%d seq:%d next:%d\",\n                           self.session.session_id, self.conn_id,\n                           seq, self.next_cmd_seq)\n            return\n\n        self._debug_log(\"conn:%d put data seq:%d len:%d\", self.conn_id, seq, len(data))\n\n        with self._lock:\n            self.cmd_queue[seq] = data.get_buf()\n            if seq == self.next_cmd_seq:\n                if self.sock:\n                    self.connection_pipe.add_sock_event(self.sock, self, selectors.EVENT_WRITE)\n                else:\n                    self.process_cmd()\n\n    def get_cmd_data(self):\n        if self.next_cmd_seq not in self.cmd_queue:\n            self._debug_log(\"get_cmd_data conn:%d no data, next_cmd_seq:%d\", self.conn_id, self.next_cmd_seq)\n            return None","sourceCodeStart":694,"sourceCodeEnd":730,"githubUrl":"https://github.com/XX-net/XX-Net/blob/cfa5bc17b67676e467f37ec50766127e0ab5f0aa/code/default/x_tunnel/local/base_container.py#L694-L730","documentation":"put_cmd_data received a data chunk whose sequence number is older than next_cmd_seq, i.e. a duplicate/late packet; it is dropped. The log shows session, conn, the stale seq and the expected next seq.","triggerScenarios":"Server resends a chunk (seq < next_cmd_seq) after a retry was already satisfied; duplicates arrive via multiple fronts.","commonSituations":"Retransmission race: retry arrived after original was processed; harmless data-drop path.","solutions":["No action needed for occasional drops","If frequent, increase retransmit timeout to avoid premature retries","Check for duplicate delivery paths"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Rely on seq dedup; do not resend aggressively","Tune retransmit timeout above RTT"],"tags":["x-tunnel","duplicate-packet","sequence-number"],"backgroundTag":"duplicate-packet-dropped","analyzedSha":"cfa5bc17b67676e467f37ec50766127e0ab5f0aa","analyzedAt":"2026-08-27T19:28:28.225Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}