Hi,
The attached patch corrects an error I introduced with r122252. I
would like to apply it to the 2.4 branch as well.
-bill
2009-02-03 Bill Holmes
* socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
For Win32, add additoinal break conditons for accept.
Code is contributed under MIT/X11 license.
Index: mono/metadata/ChangeLog
===
--- mono/metadata/ChangeLog (revision 125560)
+++ mono/metadata/ChangeLog (working copy)
@@ -1,3 +1,10 @@
+2009-02-03 Bill Holmes
+
+ * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
+ For Win32, add additoinal break conditons for accept.
+
+ Code is contributed under MIT/X11 license.
+
2009-02-03 Rodrigo Kumpera
* verify.c: Added stack_slot_full_name to provide decent and more meanfull
Index: mono/metadata/socket-io.c
===
--- mono/metadata/socket-io.c (revision 125560)
+++ mono/metadata/socket-io.c (working copy)
@@ -853,6 +853,7 @@
if (curthread) {
for (;;) {
int selectret;
+int optlen = sizeof (gint);
TIMEVAL timeout;
fd_set readfds;
FD_ZERO (&readfds);
@@ -864,6 +865,15 @@
break;
if (curthread->state & ThreadState_StopRequested)
return NULL;
+/* A negative return from select means that an error has occurred.
+ * Let _wapi_accept handle that.*/
+if (selectret != 0)
+ break;
+/* The socket's state may have changed. If it is no longer listening, stop.*/
+if (!getsockopt (sock, SOL_SOCKET, SO_ACCEPTCONN, (char*)&selectret, &optlen)) {
+ if (!selectret)
+ break;
+}
}
}
}
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list