[Twisted-Python] Socket error 22, Invalid Argument in twisted/internet/tcp.py

Werner Thie wthie at thiengineering.ch
Wed Oct 8 12:57:51 EDT 2008


As I wrote in post 
http://www.mail-archive.com/twisted-web@twistedmatrix.com/msg01701.html
I'm still observing this socket error 22 problem but was not able to dig 
into it any further until now.

I found the following post from the python mailing list, which seems 
related to my problem:

http://mail.python.org/pipermail/python-bugs-list/2006-August/034667.html

Attchached to this post is a small script, which I extended somehow and 
tried out on various platforms:

import socket

socket.setdefaulttimeout(30)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#nothing is listening on port 9999
try:
   s.connect(('127.0.0.1', 9999))
except socket.error, msg:
   print msg
   print s.getsockname()

Win32 XP & VISTA:
(10061, 'Connection refused')
('0.0.0.0', 2071)  << socket# seems to be random

Linux Fedora 9:
(111, 'Connection refused')
('0.0.0.0', 47521)  << socket# counting up when script run again

Mac OSX 10.5:
(61, 'Connection refused')
('127.0.0.1', 49169)  << socket# counting up when script run again

FreeBSD 7.0:
(61, 'Connection refused')
('127.0.0.1', 0)  << socket# remains 0 when script run again

OpenBSD 4.3:
(61, 'Connection refused')
Traceback (most recent call last):
   File "socket22error.py", line 8, in <module>
     print s.getsockname()
   File "<string>", line 1, in getsockname
socket.error: (22, 'Invalid argument')

All the OS's seem to agree more or less how this particular situation 
should be handled except OpenBSD.

I agree that this is an Python/OS related question, but what happens 
with the reactor when such an error is thrown?

Is it harmless or does the system loose resources, wait for timeouts?

Is a try/except with a normalized answer in the embracing function in 
twisted/internet/tcp.py a possible cure?

I ask because I experience an unexplainable 'hickup' behavior where the 
odd request which usually triggers an instantaneous response takes up to 
30secs until a response is seen on the client in a local and clean net 
enviroment.

Thxs, Werner

PS:
- Yes, I know trial.
- Yes, I am able to set up a build slave for OpenBSD and in fact did so.
- Yes, I requested the creds from exarkun at divmod.com for connecting this 
buildslave on 03.July 2008 17:37 but got no answer
- Yes, I'm willing to recreate the bot which was in the meantime used in 
another project
- No, I don't know if there exists an automated test case for the 
problem given above





More information about the Twisted-Python mailing list