[PATCH] ws2_32: Handle EISCONN from sendmsg

Rob Hughes rbhughes at gmail.com
Tue Mar 12 11:14:19 CDT 2019


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+wine at 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





More information about the wine-devel mailing list