Author: tack
Date: Sun Mar 19 20:17:38 2006
New Revision: 1311

Modified:
   trunk/base/src/notifier/sockets.py

Log:
Socket keeps ref cycle with notifier only while connected, so that 
disconnected sockets get deallocated without intervention from gc.


Modified: trunk/base/src/notifier/sockets.py
==============================================================================
--- trunk/base/src/notifier/sockets.py  (original)
+++ trunk/base/src/notifier/sockets.py  Sun Mar 19 20:17:38 2006
@@ -91,8 +91,12 @@
             "connected": Signal()
         }
 
-        self._rmon = SocketDispatcher(self._handle_read)
-        self._wmon = SocketDispatcher(self._handle_write)
+        # These variables hold the socket dispatchers for monitoring; we
+        # only allocate a dispatcher when the socket is connected to avoid
+        # a ref cycle so that disconnected sockets will get properly deleted
+        # when they are not referenced.
+        self._rmon = self._wmon = None
+
         self._listening = False
 
         if addr:
@@ -214,8 +218,12 @@
 
         self._socket.setblocking(False)
 
-        self._rmon.unregister()
-        self._wmon.unregister()
+        if self._rmon:
+            self._rmon.unregister()
+            self._wmon.unregister()
+
+        self._rmon = SocketDispatcher(self._handle_read)
+        self._wmon = SocketDispatcher(self._handle_write)
 
         self._rmon.register(self._socket, IO_READ)
         if self._write_buffer:
@@ -249,6 +257,7 @@
     def close(self, expected = True):
         self._rmon.unregister()
         self._wmon.unregister()
+        self._rmon = self._wmon = None
         self._write_buffer = ""
 
         self._socket.close()


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to