Mercurial > cpython-lru_cache-weakref
diff Modules/socketmodule.c @ 87134:7cd4c3e9e310
Fix sock_recvfrom_guts(): recvfrom() size is limited to an int on Windows, not
on other OSes!
| author | Victor Stinner <victor.stinner@gmail.com> |
|---|---|
| date | Sat, 16 Nov 2013 00:18:58 +0100 |
| parents | a21f506d04c9 |
| children | 9bbada125b3f |
line wrap: on
line diff
--- a/Modules/socketmodule.c Sat Nov 16 00:17:22 2013 +0100 +++ b/Modules/socketmodule.c Sat Nov 16 00:18:58 2013 +0100 @@ -840,7 +840,7 @@ return siz; } /* special-case broadcast - inet_addr() below can return INADDR_NONE for - * this */ + * this */ if (strcmp(name, "255.255.255.255") == 0 || strcmp(name, "<broadcast>") == 0) { struct sockaddr_in *sin; @@ -901,7 +901,7 @@ #endif return 4; } - } + } #endif /* HAVE_INET_PTON */ /* perform a name resolution */ @@ -2833,7 +2833,7 @@ memset(&addrbuf, 0, addrlen); timeout = internal_select_ex(s, 0, interval); if (!timeout) { -#ifndef MS_WINDOWS +#ifdef MS_WINDOWS if (len > INT_MAX) len = INT_MAX; n = recvfrom(s->sock_fd, cbuf, (int)len, flags, @@ -4702,7 +4702,7 @@ /* On UNIX, dup can be used to duplicate the file descriptor of a socket */ newfd = _Py_dup(fd); if (newfd == INVALID_SOCKET) - return NULL; + return NULL; #endif newfdobj = PyLong_FromSocket_t(newfd); @@ -5093,7 +5093,7 @@ return NULL; } - size = sizeof(addr); + size = sizeof(addr); ret = WSAStringToAddressA(ip, af, NULL, (LPSOCKADDR)&addr, &size); if (ret) { @@ -5101,10 +5101,10 @@ return NULL; } else if(af == AF_INET) { struct sockaddr_in *addr4 = (struct sockaddr_in*)&addr; - return PyBytes_FromStringAndSize((const char *)&(addr4->sin_addr), + return PyBytes_FromStringAndSize((const char *)&(addr4->sin_addr), sizeof(addr4->sin_addr)); } else if (af == AF_INET6) { - return PyBytes_FromStringAndSize((const char *)&(addr.sin6_addr), + return PyBytes_FromStringAndSize((const char *)&(addr.sin6_addr), sizeof(addr.sin6_addr)); } else { PyErr_SetString(PyExc_OSError, "unknown address family"); @@ -5231,7 +5231,7 @@ } retlen = sizeof(ip); - ret = WSAAddressToStringA((struct sockaddr*)&addr, addrlen, NULL, + ret = WSAAddressToStringA((struct sockaddr*)&addr, addrlen, NULL, ip, &retlen); if (ret) {
