Skip to content

Commit 559a352

Browse files
author
Ivelin Ivanov
authored
Merge pull request #27 from ambianic/dev
fix: improve http-proxy resilience to network disruptions
2 parents 61cd501 + 2a85739 commit 559a352

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

src/peerjs/ext/http-proxy.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -263,29 +263,34 @@ async def pnp_service_connect() -> Peer:
263263
async 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

322322
async def _shutdown():

0 commit comments

Comments
 (0)