@@ -56,7 +56,7 @@ async def connect(self, reader_remote, writer_remote, rauth, host_name, port, **
5656 async def channel (self , reader , writer , stat_bytes , stat_conn ):
5757 try :
5858 stat_conn (1 )
59- while True :
59+ while not reader . at_eof () and not writer . is_closing () :
6060 data = await reader .read (65536 )
6161 if not data :
6262 break
@@ -326,7 +326,7 @@ async def connect(self, reader_remote, writer_remote, rauth, host_name, port, my
326326 async def http_channel (self , reader , writer , stat_bytes , stat_conn ):
327327 try :
328328 stat_conn (1 )
329- while True :
329+ while not reader . at_eof () and not writer . is_closing () :
330330 data = await reader .read (65536 )
331331 if not data :
332332 break
@@ -582,7 +582,7 @@ def abort(self):
582582 ssl .connection_made (Transport ())
583583 async def channel ():
584584 try :
585- while True :
585+ while not reader . at_eof () and not ssl . _app_transport . closed :
586586 data = await reader .read (65536 )
587587 if not data :
588588 break
@@ -599,6 +599,8 @@ def write(self, data):
599599 ssl ._app_transport .write (data )
600600 def drain (self ):
601601 return writer .drain ()
602+ def is_closing (self ):
603+ return ssl ._app_transport .closed
602604 def close (self ):
603605 ssl ._app_transport .close ()
604606 return ssl_reader , Writer ()
0 commit comments