[Python-bugs-list] [ python-Bugs-758241 ] asyncore with non-default
map problems
SourceForge.net
noreply at sourceforge.net
Wed Oct 22 09:49:30 EDT 2003
Bugs item #758241, was opened at 2003-06-20 21:41
Message generated for change (Comment added) made by akuchling
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=758241&group_id=5470
Category: Python Library
Group: Python 2.4
>Status: Closed
>Resolution: Fixed
Priority: 5
Submitted By: Bob Halley (rthalley)
Assigned to: A.M. Kuchling (akuchling)
Summary: asyncore with non-default map problems
Initial Comment:
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.
There should be a map instance variable that contains
the map the object was created with, and it should be
used whenever the map needs to be referenced, e.g. in
add_channel/del_channel.
This would make close work correctly again.
----------------------------------------------------------------------
>Comment By: A.M. Kuchling (akuchling)
Date: 2003-10-22 09:49
Message:
Logged In: YES
user_id=11375
Applied to the CVS trunk as rev 1.42 of asyncore.py. Thanks to both of you for
the patch, and for reporting the bug.
----------------------------------------------------------------------
Comment By: Stephane Ninin (stephane_ninin)
Date: 2003-09-29 10:51
Message:
Logged In: YES
user_id=874382
I think this should solve the problem with non-default maps
in asyncore.dispatcher. Hope this helps.
*** asyncore.py Mon Sep 29 16:20:13 2003
--- asyncore-new.py Mon Sep 29 16:20:26 2003
***************
*** 201,206 ****
--- 201,211 ----
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
***************
*** 248,254 ****
self.socket = socket.socket(family, type)
self.socket.setblocking(0)
self._fileno = self.socket.fileno()
! self.add_channel()
def set_socket(self, sock, map=None):
self.socket = sock
--- 253,259 ----
self.socket = socket.socket(family, type)
self.socket.setblocking(0)
self._fileno = self.socket.fileno()
! self.add_channel(self.map)
def set_socket(self, sock, map=None):
self.socket = sock
***************
*** 353,359 ****
raise socket.error, why
def close(self):
! self.del_channel()
self.socket.close()
# cheap inheritance, used to pass all other attribute
--- 358,364 ----
raise socket.error, why
def close(self):
! self.del_channel(self.map)
self.socket.close()
# cheap inheritance, used to pass all other attribute
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=758241&group_id=5470
More information about the Python-bugs-list
mailing list