@ -172,6 +172,7 @@ def _connect(path, broker, sock):
stream . receive_side = side
stream . receive_side = side
stream . name = u ' unix_listener. %d ' % ( pid , )
stream . name = u ' unix_listener. %d ' % ( pid , )
mitogen . core . listen ( stream , ' disconnect ' , _cleanup )
mitogen . core . listen ( router . broker , ' shutdown ' ,
mitogen . core . listen ( router . broker , ' shutdown ' ,
lambda : router . disconnect_stream ( stream ) )
lambda : router . disconnect_stream ( stream ) )
@ -179,6 +180,7 @@ def _connect(path, broker, sock):
router . register ( context , stream )
router . register ( context , stream )
return router , context
return router , context
def connect ( path , broker = None ) :
def connect ( path , broker = None ) :
LOG . debug ( ' unix.connect(path= %r ) ' , path )
LOG . debug ( ' unix.connect(path= %r ) ' , path )
sock = socket . socket ( socket . AF_UNIX , socket . SOCK_STREAM )
sock = socket . socket ( socket . AF_UNIX , socket . SOCK_STREAM )
@ -187,3 +189,14 @@ def connect(path, broker=None):
except :
except :
sock . close ( )
sock . close ( )
raise
raise
def _cleanup ( ) :
"""
Reset mitogen . context_id and friends when our connection to the parent is
lost . Per comments on #91, these globals need to move to the Router so
fix - ups like this become unnecessary .
"""
mitogen . context_id = 0
mitogen . parent_id = None
mitogen . parent_ids = [ ]