Author: Armin Rigo <[email protected]>
Branch: py3.5
Changeset: r89301:4fbab31451c0
Date: 2017-01-02 16:49 +0100
http://bitbucket.org/pypy/pypy/changeset/4fbab31451c0/

Log:    gethostbyname(): support for the 'idna' encoding

diff --git a/pypy/module/_socket/interp_func.py 
b/pypy/module/_socket/interp_func.py
--- a/pypy/module/_socket/interp_func.py
+++ b/pypy/module/_socket/interp_func.py
@@ -21,12 +21,16 @@
         raise converted_error(space, e)
     return space.fsdecode(space.newbytes(res))
 
-@unwrap_spec(host=str)
-def gethostbyname(space, host):
+def encode_idna(space, w_host):
+    return space.bytes_w(space.call_method(space.w_unicode, 'encode',
+                                           w_host, space.wrap('idna')))
+
+def gethostbyname(space, w_host):
     """gethostbyname(host) -> address
 
     Return the IP address (a string of the form '255.255.255.255') for a host.
     """
+    host = encode_idna(space, w_host)
     try:
         addr = rsocket.gethostbyname(host)
         ip = addr.get_host()
diff --git a/pypy/module/_socket/test/test_sock_app.py 
b/pypy/module/_socket/test/test_sock_app.py
--- a/pypy/module/_socket/test/test_sock_app.py
+++ b/pypy/module/_socket/test/test_sock_app.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 import sys, os
 import pytest
 from pypy.tool.pytest.objspace import gettestobjspace
@@ -681,6 +682,11 @@
         s1.close()
         s2.close()
 
+    def test_gethostbyname_unicode(self):
+        import _socket
+        domain = 
u"&#1080;&#1089;&#1087;&#1099;&#1090;&#1072;&#1085;&#1080;&#1077;.pythontest.net"
+        _socket.gethostbyname(domain)
+
 
 class AppTestNetlink:
     def setup_class(cls):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to