Re: [Mono-dev] [PATCH] Windows Socket Accept Fix.

2009-02-10 Thread Miguel de Icaza
This looks good to me.

> 
> +   int optlen = sizeof (gint);


___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


Re: [Mono-dev] [PATCH] Windows Socket Accept Fix.

2009-02-10 Thread Bill Holmes
Can someone look at this?   I will fix my spelling in the ChangeLog
before I commit.  ;)

On Tue, Feb 3, 2009 at 1:15 PM, Bill Holmes  wrote:
> 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.
>
___
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list


[Mono-dev] [PATCH] Windows Socket Accept Fix.

2009-02-03 Thread Bill Holmes
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