chiark / gitweb /
svc/connect.in: Cope if a peer vanishes when we're trying to reconnect.
authorMark Wooding <mdw@distorted.org.uk>
Fri, 11 May 2018 23:44:27 +0000 (00:44 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 14 Jun 2018 09:34:25 +0000 (10:34 +0100)
svc/connect.in

index 85217ccb583622203230192089e802b1278eb627..c68e520d03e6f1d65363ad26a915731e920b26c5 100644 (file)
@@ -436,15 +436,18 @@ class PingPeer (object):
        me._peer]))
 
   def _reconnect(me):
-    peer = Peer(me._peer)
-    if me._connectp:
-      S.warn('connect', 'reconnecting', me._peer)
-      S.forcekx(me._peer)
-      T.spawn(run_connect, peer, peer.get('connect'))
-      me._timer = M.SelTimer(time() + me._every, me._time)
-      me._sabotage = False
-    else:
-      S.kill(me._peer)
+    try:
+      peer = Peer(me._peer)
+      if me._connectp:
+        S.warn('connect', 'reconnecting', me._peer)
+        S.forcekx(me._peer)
+        T.spawn(run_connect, peer, peer.get('connect'))
+        me._timer = M.SelTimer(time() + me._every, me._time)
+        me._sabotage = False
+      else:
+        S.kill(me._peer)
+    except TripeError, e:
+      if e.args[0] == 'unknown-peer': me._pinger.kill(me._peer)
 
   def event(me, code, stuff):
     """