From: Finn B. <bc...@us...> - 2001-11-03 17:12:15
|
Update of /cvsroot/jython/jython/Lib In directory usw-pr-cvs1:/tmp/cvs-serv23341 Modified Files: socket.py Log Message: Fix for "[ #438297 ] SimpleHTTPServer does not work" Added setsockopt() and getsockopt(). Only support for the SO_REUSEADDR option. Silently ignore the option on non-jdk1.4. Index: socket.py =================================================================== RCS file: /cvsroot/jython/jython/Lib/socket.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** socket.py 2001/07/16 17:04:56 1.11 --- socket.py 2001/11/03 17:12:13 1.12 *************** *** 28,31 **** --- 28,33 ---- SOCK_RDM = 4 # not supported SOCK_SEQPACKET = 5 # not supported + SOL_SOCKET = 0xFFFF + SO_REUSEADDR = 4 def _gethostbyaddr(name): *************** *** 85,88 **** --- 87,91 ---- server = 0 file_count = 0 + reuse_addr = 0 def bind(self, addr, port=None): *************** *** 107,110 **** --- 110,115 ---- else: self.sock = java.net.ServerSocket(port, backlog) + if hasattr(self.sock, "setReuseAddress"): + self.sock.setReuseAddress(self.reuse_addr) def accept(self): *************** *** 132,135 **** --- 137,142 ---- def _setup(self, sock): self.sock = sock + if hasattr(self.sock, "setReuseAddress"): + self.sock.setReuseAddress(self.reuse_addr) self.istream = sock.getInputStream() self.ostream = sock.getOutputStream() *************** *** 169,172 **** --- 176,187 ---- port = self.sock.getPort() return (host, port) + + def setsockopt(self, level, optname, value): + if optname == SO_REUSEADDR: + self.reuse_addr = value + + def getsockopt(self, level, optname): + if optname == SO_REUSEADDR: + return self.reuse_addr def makefile(self, mode="r", bufsize=-1): |