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

Reply via email to