summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2015-09-11 10:38:17 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2015-09-11 10:38:17 (GMT)
commitf9fdfa7c4e4b5cd02f5bc23a928037d644c8cdff (patch)
treeb8717eb220ebf9cc47899d1baf187deac3071835
parentdddfffeda1ff8496258cd68e1e66b67a8632ad77 (diff)
parentec1a498a01da2b4df22413ff778529d84111c2ee (diff)
downloadcpython-f9fdfa7c4e4b5cd02f5bc23a928037d644c8cdff.zip
cpython-f9fdfa7c4e4b5cd02f5bc23a928037d644c8cdff.tar.gz
cpython-f9fdfa7c4e4b5cd02f5bc23a928037d644c8cdff.tar.bz2
Merge 3.4
-rw-r--r--Misc/NEWS6
-rw-r--r--Modules/socketmodule.c4
2 files changed, 7 insertions, 3 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 7a48b06..bc9a4b7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -14,6 +14,12 @@ Core and Builtins
Library
-------
+- Issue #24684: socket.socket.getaddrinfo() now calls
+ PyUnicode_AsEncodedString() instead of calling the encode() method of the
+ host, to handle correctly custom string with an encode() method which doesn't
+ return a byte string. The encoder of the IDNA codec is now called directly
+ instead of calling the encode() method of the string.
+
- Issue #25060: Correctly compute stack usage of the BUILD_MAP opcode.
- Issue #24857: Comparing call_args to a long sequence now correctly returns a
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index ee24907..d9c70f8 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -5513,9 +5513,7 @@ socket_getaddrinfo(PyObject *self, PyObject *args, PyObject* kwargs)
if (hobj == Py_None) {
hptr = NULL;
} else if (PyUnicode_Check(hobj)) {
- _Py_IDENTIFIER(encode);
-
- idna = _PyObject_CallMethodId(hobj, &PyId_encode, "s", "idna");
+ idna = PyUnicode_AsEncodedString(hobj, "idna", NULL);
if (!idna)
return NULL;
assert(PyBytes_Check(idna));