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"испытание.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