Author: robertj
Date: 2007-09-08 19:43:59 -0400 (Sat, 08 Sep 2007)
New Revision: 85528
Modified:
trunk/mono/mono/io-layer/ChangeLog
trunk/mono/mono/io-layer/sockets.c
Log:
2007-09-09 Robert Jordan <[EMAIL PROTECTED]>
* sockets.c (_wapi_setsockopt): Add support for FreeBSD multicast
sockets. Fixes #81891.
Code is contributed under MIT/X11 license.
Modified: trunk/mono/mono/io-layer/ChangeLog
===================================================================
--- trunk/mono/mono/io-layer/ChangeLog 2007-09-08 23:16:34 UTC (rev 85527)
+++ trunk/mono/mono/io-layer/ChangeLog 2007-09-08 23:43:59 UTC (rev 85528)
@@ -1,3 +1,9 @@
+2007-09-09 Robert Jordan <[EMAIL PROTECTED]>
+
+ * sockets.c (_wapi_setsockopt): Add support for FreeBSD multicast
+ sockets. Fixes #81891.
+ Code is contributed under MIT/X11 license.
+
2007-09-03 Atsushi Enomoto <[EMAIL PROTECTED]>
* processes.h, processes.c : ok, they are simple string.
Modified: trunk/mono/mono/io-layer/sockets.c
===================================================================
--- trunk/mono/mono/io-layer/sockets.c 2007-09-08 23:16:34 UTC (rev 85527)
+++ trunk/mono/mono/io-layer/sockets.c 2007-09-08 23:43:59 UTC (rev 85528)
@@ -729,6 +729,19 @@
return(SOCKET_ERROR);
}
+
+#if defined(__FreeBSD__)
+ /* FreeBSD's multicast sockets also need SO_REUSEPORT when SO_REUSEADDR
is requested. */
+ if (level == SOL_SOCKET && optname == SO_REUSEADDR) {
+ int type;
+ int type_len = sizeof (type);
+
+ if (!getsockopt (fd, level, SO_TYPE, &type, &type_len)) {
+ if (type == SOCK_DGRAM)
+ setsockopt (fd, level, SO_REUSEPORT, tmp_val,
optlen);
+ }
+ }
+#endif
return(ret);
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches