[Twisted-Python] Re: [Twisted-commits] r16103 - Make loopbackTCP and loopbackUNIX return Deferreds

Jean-Paul Calderone exarkun at divmod.com
Tue Feb 28 08:22:19 EST 2006


On Tue, 28 Feb 2006 05:37:54 -0700, Jonathan Lange <jml at wolfwood.twistedmatrix.com> wrote:
>Author: jml
>Date: Tue Feb 28 05:37:52 2006
>New Revision: 16103
>
>Modified:
>   branches/deprecated-trial-1509/twisted/mail/test/test_imap.py
>   branches/deprecated-trial-1509/twisted/mail/test/test_pop3.py
>   branches/deprecated-trial-1509/twisted/mail/test/test_pop3client.py
>   branches/deprecated-trial-1509/twisted/mail/test/test_smtp.py
>   branches/deprecated-trial-1509/twisted/protocols/loopback.py
>   branches/deprecated-trial-1509/twisted/test/test_loopback.py
>   branches/deprecated-trial-1509/twisted/test/test_tpfile.py
>Log:
>Make loopbackTCP and loopbackUNIX return Deferreds
>
>Modified: branches/deprecated-trial-1509/twisted/protocols/loopback.py
>==============================================================================
>--- branches/deprecated-trial-1509/twisted/protocols/loopback.py	(original)
>+++ branches/deprecated-trial-1509/twisted/protocols/loopback.py	Tue Feb 28 05:37:52 2006
>@@ -122,14 +123,9 @@
>     clientF.noisy = noisy
>     reactor.connectTCP('127.0.0.1', serverPort.getHost().port, clientF)
>
>-    # this needs to wait until:
>-    #  A: the client has disconnected
>-    #  B: the server has noticed, and its own socket has disconnected
>-    #  C: the listening socket has been shut down
>-    spinUntil(lambda :clientF.disconnected)        # A
>-    spinUntil(lambda :not server.transport.connected)  # B
>-    serverPort.stopListening()
>-    spinUntil(lambda :not serverPort.connected)        # C
>+    d = clientF.deferred
>+    d.addCallback(lambda x : defer.maybeDeferred(serverPort.stopListening))
>+    return d
>

This now has a race, where the Deferred may fire before the server protocol is notified that the connection has been lost.

Jean-Paul




More information about the Twisted-Python mailing list