MCPcopy Create free account
hub / github.com/CJackHwang/AIstudioProxyAPI / handle_client

Method handle_client

stream/proxy_server.py:95–128  ·  view source on GitHub ↗

Handle a client connection

(
        self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter
    )

Source from the content-addressed store, hash-verified

93 return False
94
95 async def handle_client(
96 self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter
97 ):
98 """
99 Handle a client connection
100 """
101 current_task = asyncio.current_task()
102 if current_task:
103 self.background_tasks.add(current_task)
104 current_task.add_done_callback(self.background_tasks.discard)
105
106 try:
107 request_line = await reader.readline()
108 request_line = request_line.decode("utf-8").strip()
109
110 if not request_line:
111 self._safe_close(writer)
112 return
113
114 parts = request_line.split(" ")
115 if len(parts) < 2:
116 self._safe_close(writer)
117 return
118 method, target = parts[0], parts[1]
119
120 if method == "CONNECT":
121 await self._handle_connect(reader, writer, target)
122
123 except asyncio.CancelledError:
124 raise
125 except Exception as e:
126 self.logger.error(f"Error handling client: {e}", exc_info=True)
127 finally:
128 self._safe_close(writer)
129
130 async def _handle_connect(
131 self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter, target: str

Calls 3

_safe_closeMethod · 0.95
_handle_connectMethod · 0.95
errorMethod · 0.80