From: <am...@us...> - 2010-10-03 19:47:19
|
Revision: 7131 http://jython.svn.sourceforge.net/jython/?rev=7131&view=rev Author: amak Date: 2010-10-03 19:47:13 +0000 (Sun, 03 Oct 2010) Log Message: ----------- Fix and tests for a jython-specific bug relating to deferred creation of sockets. Modified Paths: -------------- trunk/jython/Lib/SocketServer.py Added Paths: ----------- trunk/jython/Lib/test/test_socketserver_jython.py Modified: trunk/jython/Lib/SocketServer.py =================================================================== --- trunk/jython/Lib/SocketServer.py 2010-10-03 17:54:49 UTC (rev 7130) +++ trunk/jython/Lib/SocketServer.py 2010-10-03 19:47:13 UTC (rev 7131) @@ -348,6 +348,9 @@ """ self.socket.listen(self.request_queue_size) + # Adding a second call to getsockname() because of this issue + # http://wiki.python.org/jython/NewSocketModule#Deferredsocketcreationonjython + self.server_address = self.socket.getsockname() def server_close(self): """Called to clean-up the server. @@ -517,12 +520,11 @@ self.request = request self.client_address = client_address self.server = server + self.setup() try: - self.setup() self.handle() + finally: self.finish() - finally: - sys.exc_traceback = None # Help garbage collection def setup(self): pass Added: trunk/jython/Lib/test/test_socketserver_jython.py =================================================================== --- trunk/jython/Lib/test/test_socketserver_jython.py (rev 0) +++ trunk/jython/Lib/test/test_socketserver_jython.py 2010-10-03 19:47:13 UTC (rev 7131) @@ -0,0 +1,17 @@ +# -*- coding: windows-1252 -*- + +import unittest + +import SocketServer + +class TestSocketServer(unittest.TestCase): + + def testEphemeralPort(self): + """ Test that an ephemeral port is set correctly """ + host, port = "localhost", 0 # If we specify 0, system should pick an emphemeral port + server = SocketServer.TCPServer( (host, port), None) # Request handler never instantiated + server_host, server_port = server.server_address + self.failIfEqual(server_port, 0, "System assigned ephemeral port should not be zero") + +if __name__ == "__main__": + unittest.main() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |