asyncore question

Stéphane Ninin stefnin at alussinan.org
Mon Sep 29 10:28:47 EDT 2003


Also sprach Raymond Hettinger :

>>
>> I believe it's an oversight in asyncore.  
>> Either create_socket should take
>> a map parameter, or __init__ should store the initial map and
>> create_socket should use it.  One workaround is to create the socket
>> yourself and call set_socket(sock, some_map). 
> 
> Please submit a bug report.
> 
> 

  I think this patch should work,

*** 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 


should I add it first to the bug [758241],
or create a patch for it ?
In that case, how to connect the patch to the bug it is supposed to solve ?

I guess I am a bit out of topic here, in that case where should I ask 
such questions ?


Regards,

-- 
Stéphane Ninin







More information about the Python-list mailing list