|
From: <otm...@us...> - 2011-01-23 15:51:40
|
Revision: 7189
http://jython.svn.sourceforge.net/jython/?rev=7189&view=rev
Author: otmarhumbel
Date: 2011-01-23 15:51:34 +0000 (Sun, 23 Jan 2011)
Log Message:
-----------
fix bug #1697 by excluding IPv6 addresses from socket.getaddrinfo();
this is a temporary fix, since we should support IPv6 in the future
Modified Paths:
--------------
trunk/jython/Lib/socket.py
Added Paths:
-----------
trunk/jython/Lib/test/test_socket_jy.py
Modified: trunk/jython/Lib/socket.py
===================================================================
--- trunk/jython/Lib/socket.py 2011-01-22 21:24:58 UTC (rev 7188)
+++ trunk/jython/Lib/socket.py 2011-01-23 15:51:34 UTC (rev 7189)
@@ -617,16 +617,18 @@
for a in java.net.InetAddress.getAllByName(host):
if len([f for f in filter_fns if f(a)]):
family = {java.net.Inet4Address: AF_INET, java.net.Inet6Address: AF_INET6}[a.getClass()]
- if passive_mode and not canonname_mode:
- canonname = ""
- else:
- canonname = asPyString(a.getCanonicalHostName())
- if host is None and passive_mode and not canonname_mode:
- sockname = INADDR_ANY
- else:
- sockname = asPyString(a.getHostAddress())
- # TODO: Include flowinfo and scopeid in a 4-tuple for IPv6 addresses
- results.append((family, socktype, proto, canonname, (sockname, port)))
+ # bug 1697: exclude IPv6 addresses from being returned
+ if family != AF_INET6:
+ if passive_mode and not canonname_mode:
+ canonname = ""
+ else:
+ canonname = asPyString(a.getCanonicalHostName())
+ if host is None and passive_mode and not canonname_mode:
+ sockname = INADDR_ANY
+ else:
+ sockname = asPyString(a.getHostAddress())
+ # TODO: Include flowinfo and scopeid in a 4-tuple for IPv6 addresses
+ results.append((family, socktype, proto, canonname, (sockname, port)))
return results
except java.lang.Exception, jlx:
raise _map_exception(jlx)
Added: trunk/jython/Lib/test/test_socket_jy.py
===================================================================
--- trunk/jython/Lib/test/test_socket_jy.py (rev 0)
+++ trunk/jython/Lib/test/test_socket_jy.py 2011-01-23 15:51:34 UTC (rev 7189)
@@ -0,0 +1,25 @@
+import httplib
+import socket
+import sys
+from test import test_support
+import unittest
+
+
+class SocketIPv6Test(unittest.TestCase):
+
+ def test_connect_localhost(self):
+ '''Ensures a correct socket.error message'''
+ conn = httplib.HTTPConnection('localhost', 18080)
+ body = ""
+ headers = {}
+ try:
+ conn.request("GET", "/RELEASE-NOTES.txt", body, headers)
+ except socket.error:
+ pass # used to get an AssertionError (see bug 1697)
+
+
+def test_main():
+ test_support.run_unittest(SocketIPv6Test)
+
+if __name__ == "__main__":
+ test_main()
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|