{"record":{"id":"22f8b87876b93e34","repo":"XX-net/XX-Net","slug":"socks4-connect-fail-no-conn-id","errorCode":null,"errorMessage":"Socks4 connect fail, no conn_id","messagePattern":"Socks4 connect fail, no conn_id","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"code/default/x_tunnel/local/proxy_handler.py","lineNumber":210,"sourceCode":"        addr_pack = data[2:6]\n        if addr_pack[0:3] == b'\\x00\\x00\\x00' and addr_pack[3] != b'\\x00':\n            domain_mode = True\n        else:\n            ip = socket.inet_ntoa(addr_pack)\n            domain_mode = False\n\n        user_id = self.read_null_end_line()\n        if len(user_id):\n            xlog.debug(\"Socks4 user_id:%s\", user_id)\n\n        if domain_mode:\n            addr = self.read_null_end_line()\n        else:\n            addr = ip\n\n        conn_id = proxy_session.create_conn(sock, addr, port)\n        if not conn_id:\n            xlog.warn(\"Socks4 connect fail, no conn_id\")\n            reply = b\"\\x00\\x5b\\x00\" + addr_pack + struct.pack(\">H\", port)\n            sock.send(reply)\n            return\n\n        xlog.info(\"Socks4:%r to %s:%d, conn:%d\", self.client_address, addr, port, conn_id)\n        reply = b\"\\x00\\x5a\" + addr_pack + struct.pack(\">H\", port)\n        sock.send(reply)\n\n        if len(self.read_buffer) - self.buffer_start:\n            g.session.conn_list[conn_id].transfer_received_data(self.read_buffer[self.buffer_start:])\n\n        g.session.conn_list[conn_id].start(block=True)\n\n    def socks5_handler(self):\n        sock = self.connection\n        auth_mode_num = ord(self.read_bytes(1))\n        data = self.read_bytes(auth_mode_num)\n","sourceCodeStart":192,"sourceCodeEnd":228,"githubUrl":"https://github.com/XX-net/XX-Net/blob/cfa5bc17b67676e467f37ec50766127e0ab5f0aa/code/default/x_tunnel/local/proxy_handler.py#L192-L228","documentation":"proxy_session.create_conn failed to establish a tunnel connection (returned no conn_id) for the SOCKS4 CONNECT request, so a SOCKS4 'rejected' reply (0x5b) is sent.","triggerScenarios":"SOCKS4 CONNECT when the x-tunnel session is down, not logged in, out of quota, or the target connection creation timed out server-side.","commonSituations":"x-tunnel session not started / login missing, quota exhausted, or front connectivity failure (see error 223).","solutions":["Verify x-tunnel login (account/password configured) and session established","Check balance/quota via request_balance","Ensure fronts are alive (front_dispatcher warnings)","Then retry the client request"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"if not g.session or not g.session.conn_list:\n    wait_for_session()  # session must exist before create_conn","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Ensure login/session established before SOCKS traffic","Monitor quota"],"tags":["x-tunnel","socks4","tunnel"],"backgroundTag":"proxy-upstream-connect-failed","analyzedSha":"cfa5bc17b67676e467f37ec50766127e0ab5f0aa","analyzedAt":"2026-08-27T19:28:28.225Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}