[Bug #758241] When you use asyncore with a non-default map, methods

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.
This commit is contained in:
Andrew M. Kuchling 2003-10-22 13:48:27 +00:00
parent d22bb6584d
commit f9ca409292
1 changed files with 7 additions and 2 deletions

View 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]