diff options
Diffstat (limited to 'winsup/cygwin/fhandler_socket.cc')
-rw-r--r-- | winsup/cygwin/fhandler_socket.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc index 7ab1ce8eb..93af60ee4 100644 --- a/winsup/cygwin/fhandler_socket.cc +++ b/winsup/cygwin/fhandler_socket.cc @@ -1347,7 +1347,12 @@ fhandler_socket::recv_internal (LPWSAMSG wsamsg) res = WSARecvMsg (get_socket (), wsamsg, &wret, NULL, NULL); else res = WSARecvFrom (get_socket (), wsabuf, wsacnt, &wret, - &wsamsg->dwFlags, wsamsg->name, &wsamsg->namelen, + &wsamsg->dwFlags, wsamsg->name, + /* Winsock returns WSAEFAULT if namelen is a valid + pointer while name is NULL. Both parameters are + ignored for TCP sockets, so this only occurs when + using UDP socket. */ + wsamsg->name ? &wsamsg->namelen : NULL, NULL, NULL); if (!res) { |