]> granicus.if.org Git - python/commitdiff
[Bug #758241] When you use asyncore with a non-default map, methods
authorAndrew M. Kuchling <amk@amk.ca>
Wed, 22 Oct 2003 13:48:27 +0000 (13:48 +0000)
committerAndrew M. Kuchling <amk@amk.ca>
Wed, 22 Oct 2003 13:48:27 +0000 (13:48 +0000)
  of the dispatcher object break.  e.g. if you close() the object, it
  tries to remove itself from the default map, not from the map the
  dispatcher was created with.

  The patch, from Stephane Ninin, records the map as an attribute of
  the dispatcher instance.

2.3 bugfix candidate.

Lib/asyncore.py

index 7fb84b47fa8e5de62ce9910ee54bd3267d2dec24..7bd269b744610b3ee5d49406be72f23d1d10fc45 100644 (file)
@@ -201,6 +201,11 @@ class dispatcher:
     addr = None
 
     def __init__(self, sock=None, map=None):
+        if map is None:
+            self._map = socket_map
+        else:
+            self._map = map
+
         if sock:
             self.set_socket(sock, map)
             # I think it should inherit this anyway
@@ -232,13 +237,13 @@ class dispatcher:
     def add_channel(self, map=None):
         #self.log_info('adding channel %s' % self)
         if map is None:
-            map = socket_map
+            map = self._map
         map[self._fileno] = self
 
     def del_channel(self, map=None):
         fd = self._fileno
         if map is None:
-            map = socket_map
+            map = self._map
         if map.has_key(fd):
             #self.log_info('closing channel %d:%s' % (fd, self))
             del map[fd]