@@ -263,29 +263,34 @@ async def pnp_service_connect() -> Peer:
263263async def make_discoverable (peer = None ):
264264 """Enable remote peers to find and connect to this peer."""
265265 log .debug ('Enter peer discoverable.' )
266- assert peer
267266 log .debug ('Before _is_shutting_down' )
268267 global _is_shutting_down
269268 log .debug ('Making peer discoverable.' )
270269 while not _is_shutting_down :
271270 log .debug ('Discovery loop.' )
271+ log .debug ('peer status: %r' , peer )
272272 try :
273- # check if the websocket connection
274- # to the signaling server is alive
275- if peer .open :
276- await join_peer_room (peer = peer )
277- elif peer .destroyed :
278- log .info ('Peer connection destroyed. Will create a new peer.' )
273+ if not peer or peer .destroyed :
274+ log .info ('Peer destroyed. Will create a new peer.' )
279275 peer = await pnp_service_connect ()
276+ elif peer .open :
277+ await join_peer_room (peer = peer )
280278 elif peer .disconnected :
281279 log .info ('Peer disconnected. Will try to reconnect.' )
282280 await peer .reconnect ()
283281 else :
284282 log .info ('Peer still establishing connection. %r' , peer )
285283 except Exception as e :
286- log .exception ('Unable to join room. '
284+ log .exception ('Error while trying to join local peer room. '
287285 'Will retry in a few moments. '
288- 'Error %r' , e )
286+ 'Error: \n %r' , e )
287+ if peer and not peer .destroyed :
288+ # something is not right with the connection to the server
289+ # lets start a fresh peer connection
290+ log .info ('Peer connection was corrupted. Detroying peer.' )
291+ await peer .destroy ()
292+ peer = None
293+ log .debug ('peer status after destroy: %r' , peer )
289294 await asyncio .sleep (3 )
290295
291296
@@ -309,14 +314,9 @@ async def _start():
309314 global http_session
310315 http_session = aiohttp .ClientSession ()
311316 global peer
312- peer = await pnp_service_connect ()
313- if peer :
314- log .info ('Calling make_discoverable' )
315- await make_discoverable (peer = peer )
316- log .info ('Exited make_discoverable' )
317- else :
318- log .warning ('Failed to create peer.' )
319- return peer
317+ log .info ('Calling make_discoverable' )
318+ await make_discoverable (peer = peer )
319+ log .info ('Exited make_discoverable' )
320320
321321
322322async def _shutdown ():
0 commit comments