@@ -246,6 +246,7 @@ def handler(self, connection, ws_path):
246246
247247 # Remove client from path
248248 path .remove_client (client )
249+ self ._server .paths .clean (path )
249250
250251 # Wait for the task loop to complete
251252 # Note: This will ensure all relay messages are cancelled and a 'send-error' is
@@ -294,6 +295,7 @@ def handler(self, connection, ws_path):
294295
295296 # Wait for the connection to be closed
296297 yield from close_future
298+ client .log .debug ('WS connection closed' )
297299
298300 # Remove protocol from server and stop
299301 self ._server .unregister (self )
@@ -556,6 +558,7 @@ def initiator_receive_loop(self):
556558 'Dropping responder {}, reason: {}' , responder , message .reason )
557559 responder .log .debug (
558560 'Dropping (requested by initiator), reason: {}' , message .reason )
561+ # TODO: Mark responder as dropped and don't send relay messages
559562 coroutine = responder .close (code = message .reason .value )
560563 yield from responder .enqueue_task (coroutine )
561564 else :
@@ -725,16 +728,17 @@ def __init__(self):
725728 def get (self , initiator_key ):
726729 if self .paths .get (initiator_key ) is None :
727730 self .number += 1
728- self .paths [initiator_key ] = Path (initiator_key , self .number )
731+ self .paths [initiator_key ] = Path (initiator_key , self .number , attached = True )
729732 self ._log .debug ('Created new path: {}' , self .number )
730733 return self .paths [initiator_key ]
731734
732735 def clean (self , path ):
733- if path .empty :
736+ if path .attached and path .empty :
737+ path .attached = False
734738 try :
735739 del self .paths [path .initiator_key ]
736740 except KeyError :
737- self ._log .warning ('Path {} has already been removed' , path .number )
741+ self ._log .error ('Path {} has already been removed' , path .number )
738742 else :
739743 self ._log .debug ('Removed empty path: {}' , path .number )
740744
@@ -803,7 +807,6 @@ def register(self, protocol):
803807 def unregister (self , protocol ):
804808 self .protocols .remove (protocol )
805809 self ._log .debug ('Protocol unregistered: {}' , protocol )
806- self .paths .clean (protocol .path )
807810
808811 def register_event_callback (self , event : Event , callback : Coroutine ):
809812 """
0 commit comments