|
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.
|