[PATCH] ws2_32: Handle EISCONN from sendmsg
When calling sendmsg on a socket that's already connected, some implementations will return EISCONN if you specify a recipient (notably, Darwin/OSX with UDP connections). Newer versions of Linux and Windows will simply ignore the destination parameter. Signed-off-by: Rob Hughes <rbhughes(a)gmail.com> --- dlls/ws2_32/socket.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 3755338ee8..c75a7047ce 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -2628,6 +2628,11 @@ static int WS2_send( int fd, struct ws2_async *wsa, int flags ) while ((ret = sendmsg(fd, &hdr, flags)) == -1) { + if (errno == EISCONN) { + hdr.msg_name = 0; + hdr.msg_namelen = 0; + continue; + } if (errno != EINTR) return -1; } -- 2.19.1
participants (1)
-
Rob Hughes