New submission from Giampaolo Rodola' <[EMAIL PROTECTED]>: When the SO_OOBINLINE option is used against a socket, out-of-band data should be placed in the normal data input stream as it is received. In fact this is what happens on Windows and Linux by using the script below. On FreeBSD this does not happen. select instead of returning a "readable" file descriptor returns an "exceptional" file descriptor. Later, when we try to read some data from the socket, the following exception is raised:
Exception in thread Thread-1: Traceback (most recent call last): File "/usr/local/lib/python2.5/threading.py", line 460, in __bootstrap self.run() File "/usr/local/lib/python2.5/threading.py", line 440, in run self.__target(*self.__args, **self.__kwargs) File "_test2.py", line 14, in server data = conn.recv(1024, socket.MSG_OOB) error: (22, 'Invalid argument') --- code --- import socket, select, threading, time, os def server(): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind(('', 1024)) s.listen(1) conn, addr = s.accept() conn.setblocking(0) conn.setsockopt(socket.SOL_SOCKET, socket.SO_OOBINLINE, 1) while 1: r, w, e = select.select([conn], [conn], [conn], 0.01) if r: # the socket is supposed to be in the "readable" list data = conn.recv(1024) print "read -> " + data if e: # ...but not in the "exception" list data = conn.recv(1024, socket.MSG_OOB) print "expt -> " + data threading.Thread(target=server).start() time.sleep(0.1) s = socket.socket() s.connect(('127.0.0.1', 1024)) s.sendall('x', socket.MSG_OOB) --- /code --- ---------- components: Library (Lib) messages: 69237 nosy: giampaolo.rodola severity: normal status: open title: socket's SO_REUSEADDR option does not work on FreeBSD type: behavior versions: Python 2.5, Python 2.6, Python 3.0 _______________________________________ Python tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue3278> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com