Fix BUG 1237
Martin Wilck
Martin.Wilck at Fujitsu-Siemens.com
Mon Jan 27 03:22:11 CST 2003
Modified files:
dlls/winsock: socket.c
server: sock.c
ChangeLog:
Do not clear FD_WINE_CONNECTED on shutdown().
FD_WINE_CONNECTED (currently unused) can thus be used
to determine if a stream socket was ever connected.
This fixes BUG 1237, where an app reads from a never-connected
socket (http://bugs.winehq.com/show_bug.cgi?id=1237)
Index: dlls/winsock/socket.c
===================================================================
RCS file: /home/wine/wine/dlls/winsock/socket.c,v
retrieving revision 1.117
diff -u -r1.117 socket.c
--- dlls/winsock/socket.c 23 Jan 2003 21:20:36 -0000 1.117
+++ dlls/winsock/socket.c 24 Jan 2003 09:59:29 -0000
@@ -2835,7 +2835,7 @@
case 2: /* drop all */
clear_flags |= FD_READ|FD_WRITE;
default:
- clear_flags |= FD_WINE_CONNECTED|FD_WINE_LISTENING;
+ clear_flags |= FD_WINE_LISTENING;
}
if ( flags & FD_FLAG_OVERLAPPED ) {
Index: server/sock.c
===================================================================
RCS file: /home/wine/wine/server/sock.c,v
retrieving revision 1.39
diff -u -r1.39 sock.c
--- server/sock.c 19 Oct 2002 01:00:59 -0000 1.39
+++ server/sock.c 24 Jan 2003 09:59:32 -0000
@@ -398,7 +398,7 @@
{
sock->errors[FD_CLOSE_BIT] = sock_error( sock->obj.fd );
if ( (event & POLLERR) || ( sock_shutdown_type == SOCK_SHUTDOWN_EOF && (event & POLLHUP) ))
- sock->state &= ~(FD_WINE_CONNECTED|FD_WRITE);
+ sock->state &= ~FD_WRITE;
sock->pmask |= FD_CLOSE;
sock->hmask |= FD_CLOSE;
if (debug_level)
@@ -494,8 +494,11 @@
}
*flags = 0;
if (sock->flags & WSA_FLAG_OVERLAPPED) *flags |= FD_FLAG_OVERLAPPED;
- if ( !(sock->state & FD_READ ) ) *flags |= FD_FLAG_RECV_SHUTDOWN;
- if ( !(sock->state & FD_WRITE ) ) *flags |= FD_FLAG_SEND_SHUTDOWN;
+ if ( sock->type != SOCK_STREAM || sock->state & FD_WINE_CONNECTED )
+ {
+ if ( !(sock->state & FD_READ ) ) *flags |= FD_FLAG_RECV_SHUTDOWN;
+ if ( !(sock->state & FD_WRITE ) ) *flags |= FD_FLAG_SEND_SHUTDOWN;
+ }
return FD_TYPE_SOCKET;
}
--
Martin Wilck Phone: +49 5251 8 15113
Fujitsu Siemens Computers Fax: +49 5251 8 20409
Heinz-Nixdorf-Ring 1 mailto:Martin.Wilck at Fujitsu-Siemens.com
D-33106 Paderborn http://www.fujitsu-siemens.com/primergy
More information about the wine-patches
mailing list