use IPV6_ONLY when binding sockets
authorChristian Grothoff <christian@grothoff.org>
Tue, 11 May 2010 17:20:32 +0000 (17:20 +0000)
committerChristian Grothoff <christian@grothoff.org>
Tue, 11 May 2010 17:20:32 +0000 (17:20 +0000)
src/arm/gnunet-service-manager.c
src/arm/test_arm_api.c
src/arm/test_arm_api_data.conf
src/util/server.c

index 79a5e5043f74511cca21812428703e387c434119..5a8cd58d2fa8c23f3610b003617d59e688f0d519 100644 (file)
@@ -675,6 +675,14 @@ createListeningSocket (struct sockaddr *sa,
       (sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof (on)) != GNUNET_OK)
     GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
                          "setsockopt");
+#ifdef IPV6_V6ONLY
+  if ( (sa->sa_family == AF_INET6) &&
+       (GNUNET_NETWORK_socket_setsockopt
+       (sock, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof (on)) != GNUNET_OK))
+    GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
+                        "setsockopt");
+#endif
+
   if (GNUNET_NETWORK_socket_bind
       (sock, (const struct sockaddr *) sa, addr_len) != GNUNET_OK)
     {
@@ -693,6 +701,9 @@ createListeningSocket (struct sockaddr *sa,
       GNUNET_free (sa);
       return;
     }
+  GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+             _("ARM now monitors connections to service `%s'\n"),
+             serviceName);
   serviceListeningInfo = GNUNET_malloc (sizeof (struct ServiceListeningInfo));
   serviceListeningInfo->serviceName = GNUNET_strdup (serviceName);
   serviceListeningInfo->service_addr = sa;
index 66201aebe76d2a7569d21a4914d86eca7c59b69f..e6335c64c2894a55fa3ac7884bae264fb9194b3b 100644 (file)
@@ -34,7 +34,7 @@
 
 #define START_ARM GNUNET_YES
 
-#define START_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, 50)
+#define START_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, 500)
 
 #define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 15)
 
index 17a8ac613e4265b84848c922731a55f152761b24..d4e8d6dbd143745b38dd911186a8b8f4ee8e9ae1 100644 (file)
@@ -22,4 +22,3 @@ CONFIG = $DEFAULTCONFIG
 BINARY = mockup-service
 ACCEPT_FROM = 127.0.0.1;
 ACCEPT_FROM6 = ::1;
-ALLOW_SHUTDOWN = YES
index 832f4ed583aacc5e7ac299645c26c639a8a21e3c..131c7c5c1fdc01daead809e0b12426b7ac2061b6 100644 (file)
@@ -386,11 +386,20 @@ open_listen_socket (const struct sockaddr *serverAddr, socklen_t socklen)
       errno = 0;
       return NULL;
     }
-  if ((port != 0) &&
-      (GNUNET_NETWORK_socket_setsockopt
-       (sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof (on)) != GNUNET_OK))
-    GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
-                         "setsockopt");
+  if (port != 0) 
+    {
+      if (GNUNET_NETWORK_socket_setsockopt
+         (sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof (on)) != GNUNET_OK)
+       GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
+                            "setsockopt");
+#ifdef IPV6_V6ONLY
+      if ( (serverAddr->sa_family == AF_INET6) &&
+          (GNUNET_NETWORK_socket_setsockopt
+           (sock, IPPROTO_IPV6, IPV6_V6ONLY, &on, sizeof (on)) != GNUNET_OK) )
+       GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
+                            "setsockopt");
+#endif
+    }
   /* bind the socket */
   if (GNUNET_NETWORK_socket_bind (sock, serverAddr, socklen) != GNUNET_OK)
     {