@@ -77,20 +77,24 @@ def forward_traffic():
7777 mypoll .register (self .sock , select .POLLIN )
7878 mypoll .register (self .master , select .POLLIN )
7979 while not self ._terminated :
80- fdlist = mypoll .poll (1000 )
81- for fd , event in fdlist :
82- if fd == self .master :
83- request = os .read (fd , 4096 )
84- if len (request ) == 0 : # disconnect by PTY slave
85- self .on_slave_disconnect (self )
86- return
87- self .sock .send (request )
88- else :
89- request = self .sock .recv (4096 )
90- if len (request ) == 0 : # disconnect by client behind socket
91- self .on_socket_disconnect (self )
92- return
93- os .write (self .master , request )
80+ try :
81+ fdlist = mypoll .poll (1000 )
82+ for fd , event in fdlist :
83+ if fd == self .master :
84+ request = os .read (fd , 4096 )
85+ if len (request ) == 0 : # disconnect by PTY slave
86+ self .on_slave_disconnect (self )
87+ return
88+ self .sock .send (request )
89+ else :
90+ request = self .sock .recv (4096 )
91+ if len (request ) == 0 : # disconnect by client behind socket
92+ self .on_socket_disconnect (self )
93+ return
94+ os .write (self .master , request )
95+ except ConnectionResetError :
96+ self .on_socket_disconnect (self )
97+ return
9498
9599 self ._terminated = False
96100 self ._thread = threading .Thread (target = forward_traffic , name = "PTY on {}" .format (os .ttyname (self .slave )), daemon = True )
0 commit comments