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 <
rhughes37@bloomberg.net>
---
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