SF.net SVN: jython:[7131] trunk/jython/Lib

[email protected] Sun, 03 Oct 2010 19:47:14 +0000
Newsgroups gmane.comp.lang.jython.cvs
Message-ID <[email protected]>
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.

------------------------------------------------------------------------------
Virtualization is moving to the mainstream and overtaking non-virtualized
environment for deploying applications. Does it make network security 
easier or more difficult to achieve? Read this whitepaper to separate the 
two and get a better understanding.
http://p.sf.net/sfu/hp-phase2-d2d