|
|
@@ -423,21 +423,9 @@ class SocksEdge:
|
|
|
async def _accept(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter) -> None:
|
|
|
try:
|
|
|
peer = writer.get_extra_info("peername")
|
|
|
- host, port, udp_mode = await self._handshake(reader, writer, peer)
|
|
|
+ _host, _port, udp_mode = await self._handshake(reader, writer, peer)
|
|
|
if udp_mode:
|
|
|
return
|
|
|
- links = self._selected_links()
|
|
|
- session = TcpRaceSession(
|
|
|
- session_id=next(self.session_ids),
|
|
|
- stream_id=0,
|
|
|
- target_host=host,
|
|
|
- target_port=port,
|
|
|
- local_reader=reader,
|
|
|
- local_writer=writer,
|
|
|
- links=links,
|
|
|
- warmup_bytes=self.config.tcp_warmup_bytes,
|
|
|
- )
|
|
|
- await session.start()
|
|
|
except Exception:
|
|
|
writer.close()
|
|
|
with contextlib.suppress(Exception):
|
|
|
@@ -588,10 +576,9 @@ class SocksEdge:
|
|
|
port = struct.unpack("!H", await read_exact(reader, 2))[0]
|
|
|
peer_text = f"{peer[0]}:{peer[1]}" if isinstance(peer, tuple) and len(peer) >= 2 else str(peer)
|
|
|
if command == 1:
|
|
|
- print(f"[edge] socks handshake peer={peer_text} command=connect target={host}:{port}")
|
|
|
- writer.write(b"\x05\x00\x00\x01\x00\x00\x00\x00\x00\x00")
|
|
|
+ writer.write(b"\x05\x07\x00\x01\x00\x00\x00\x00\x00\x00")
|
|
|
await writer.drain()
|
|
|
- return host, port, False
|
|
|
+ raise ValueError("tcp connect disabled in socks udp-only mode")
|
|
|
if command == 3 and self.udp_server and self.udp_server.transport:
|
|
|
bind_host, bind_port = self.udp_server.transport.get_extra_info("sockname")[:2]
|
|
|
self.udp_server.register_associate(peer)
|