@@ -235,11 +235,6 @@ async def pc_close():
235235
236236async def pnp_service_connect () -> Peer :
237237 """Create a Peer instance and register with PnP signaling server."""
238- # if connection to pnp service already open, then nothing to do
239- global peer
240- if peer and peer .open :
241- log .info ('peer already connected' )
242- return
243238 # Create own peer object with connection to shared PeerJS server
244239 log .info ('creating peer' )
245240 # If we already have an assigned peerId, we will reuse it forever.
@@ -262,9 +257,7 @@ async def pnp_service_connect() -> Peer:
262257 await peer .start ()
263258 log .info ('peer activated' )
264259 _setPnPServiceConnectionHandlers (peer )
265- log .info ('Calling make_discoverable' )
266- await make_discoverable (peer = peer )
267- log .info ('Exited make_discoverable' )
260+ return peer
268261
269262
270263async def make_discoverable (peer = None ):
@@ -281,14 +274,14 @@ async def make_discoverable(peer=None):
281274 # to the signaling server is alive
282275 if peer .open :
283276 await join_peer_room (peer = peer )
277+ elif peer .destroyed :
278+ log .info ('Peer connection destroyed. Will create a new peer.' )
279+ peer = await pnp_service_connect ()
280+ elif peer .disconnected :
281+ log .info ('Peer disconnected. Will try to reconnect.' )
282+ await peer .reconnect ()
284283 else :
285- log .info ('Peer not connected to signaling server. '
286- 'Will retry in a bit.' )
287- if peer .disconnected :
288- log .info ('Peer disconnected. Will try to reconnect.' )
289- await peer .reconnect ()
290- else :
291- log .info ('Peer still establishing connection. %r' , peer )
284+ log .info ('Peer still establishing connection. %r' , peer )
292285 except Exception as e :
293286 log .exception ('Unable to join room. '
294287 'Will retry in a few moments. '
@@ -315,14 +308,27 @@ def _config_logger():
315308async def _start ():
316309 global http_session
317310 http_session = aiohttp .ClientSession ()
318- await pnp_service_connect ()
311+ 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
319320
320321
321322async def _shutdown ():
322323 global _is_shutting_down
323324 _is_shutting_down = True
325+ global peer
326+ log .debug ('Shutting down. Peer %r' , peer )
324327 if peer :
328+ log .info ('Destroying peer %r' , peer )
325329 await peer .destroy ()
330+ else :
331+ log .info ('Peer is None' )
326332 # loop.run_until_complete(pc.close())
327333 # loop.run_until_complete(signaling.close())
328334 global http_session
@@ -348,12 +354,12 @@ async def _shutdown():
348354 # coro = _run_offer(pc, signaling)
349355 # else:
350356 # coro = _run_answer(pc, signaling)
351- coro = _start
352357
353358 # run event loop
354359 loop = asyncio .get_event_loop ()
355360 try :
356- loop .run_until_complete (coro ())
361+ log .info ('\n >>>>> Starting http-proxy over webrtc. <<<<' )
362+ loop .run_until_complete (_start ())
357363 loop .run_forever ()
358364 except KeyboardInterrupt :
359365 log .info ('KeyboardInterrupt detected.' )
0 commit comments