client: closures confuse me, late binding bites me yet again
authorBrian Warner <warner@lothar.com>
Sun, 3 Dec 2006 07:53:07 +0000 (00:53 -0700)
committerBrian Warner <warner@lothar.com>
Sun, 3 Dec 2006 07:53:07 +0000 (00:53 -0700)
allmydata/client.py

index bc004789768e6b8f18732b72dbd40954704c38ea..a860872293fb0c3e1fb361adef29c76cd57a68f5 100644 (file)
@@ -82,11 +82,13 @@ class Client(node.Node, Referenceable):
             self.all_peers.add(nodeid)
             if nodeid not in self.connections:
                 d = self.tub.getReference(pburl)
-                def _got_reference(ref):
-                    self.log("connected to %s" % idlib.b2a(nodeid))
-                    if nodeid in self.all_peers:
-                        self.connections[nodeid] = ref
-                d.addCallback(_got_reference)
+                def _got_reference(ref, which_nodeid):
+                    self.log("connected to %s" % idlib.b2a(which_nodeid))
+                    if which_nodeid in self.all_peers:
+                        self.connections[which_nodeid] = ref
+                    else:
+                        log.msg(" ignoring it because we no longer want to talk to them")
+                d.addCallback(_got_reference, nodeid)
 
     def remote_lost_peers(self, lost_peers):
         for nodeid in lost_peers: