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; }
Hi,
While running your changed tests on Windows, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=49198
Your paranoid android.
=== debian9 (build log) ===
error: corrupt patch at line 16 Task: Patch failed to apply
=== debian9 (build log) ===
error: corrupt patch at line 16 Task: Patch failed to apply