This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author giampaolo.rodola
Recipients giampaolo.rodola, ixokai
Date 2010-11-06.14:56:28
SpamBayes Score 6.437553e-10
Marked as misclassified No
Message-id <1289055392.69.0.485144076522.issue10340@psf.upfronthosting.co.za>
In-reply-to
Content
http://code.google.com/p/pyftpdlib/issues/detail?id=143
This comes from a user who sent me a report via e-mail. Unfortunately I don't have an OSX box to test against.

Code which should replicate the problem is this:

import socket, struct
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', 1, 0))
s.connect(('localhost', 21))
s.close()

...while this is a fix I think it should work:

Index: Lib/asyncore.py
===================================================================
--- Lib/asyncore.py	(revisione 86084)
+++ Lib/asyncore.py	(copia locale)
@@ -242,7 +242,7 @@
             try:
                 self.addr = sock.getpeername()
             except socket.error, err:
-                if err.args[0] == ENOTCONN:
+                if err.args[0] in (ENOTCONN, EINVAL):
                     # To handle the case where we got an unconnected
                     # socket.
                     self.connected = False


Nosying ixokai as I know he has an OSX box to test against.
Setting "high" priority and type == "security" as asyncore-based servers are likely to crash because of this.
It might even make sense to backport the fix in Python 2.6 because of the security implications.
History
Date User Action Args
2010-11-06 14:56:32giampaolo.rodolasetrecipients: + giampaolo.rodola, ixokai
2010-11-06 14:56:32giampaolo.rodolasetmessageid: <1289055392.69.0.485144076522.issue10340@psf.upfronthosting.co.za>
2010-11-06 14:56:29giampaolo.rodolalinkissue10340 messages
2010-11-06 14:56:28giampaolo.rodolacreate