MCPcopy
hub / github.com/urllib3/urllib3 / _read_write_loop

Method _read_write_loop

test/test_ssltransport.py:298–337  ·  view source on GitHub ↗
(
        self,
        client_sock: socket.socket,
        server_sock: socket.socket,
        chunks: int = 65536,
    )

Source from the content-addressed store, hash-verified

296 self._start_server(proxy_handler)
297
298 def _read_write_loop(
299 self,
300 client_sock: socket.socket,
301 server_sock: socket.socket,
302 chunks: int = 65536,
303 ) -> None:
304 inputs = [client_sock, server_sock]
305 output = [client_sock, server_sock]
306
307 while inputs:
308 readable, writable, exception = select.select(inputs, output, inputs)
309
310 if exception:
311 # Error occurred with either of the sockets, time to
312 # wrap up, parent func will close sockets.
313 break
314
315 for s in readable:
316 read_socket, write_socket = None, None
317 if s == client_sock:
318 read_socket = client_sock
319 write_socket = server_sock
320 else:
321 read_socket = server_sock
322 write_socket = client_sock
323
324 # Ensure buffer is not full before writing
325 if write_socket in writable:
326 try:
327 b = read_socket.recv(chunks)
328 if len(b) == 0:
329 # One of the sockets has EOFed, we return to close
330 # both.
331 return
332 write_socket.send(b)
333 except ssl.SSLEOFError:
334 # It's possible, depending on shutdown order, that we'll
335 # try to use a socket that was closed between select
336 # calls.
337 return
338
339
340class TlsInTlsTestCase(SocketDummyServerTestCase):

Callers 1

proxy_handlerMethod · 0.95

Calls 2

recvMethod · 0.45
sendMethod · 0.45

Tested by

no test coverage detected