-skip duplicate addrs
authorChristian Grothoff <christian@grothoff.org>
Wed, 25 Apr 2012 14:42:53 +0000 (14:42 +0000)
committerChristian Grothoff <christian@grothoff.org>
Wed, 25 Apr 2012 14:42:53 +0000 (14:42 +0000)
src/util/server.c
src/util/test_service.c

index 8f997ca391f6fbe104635c1ef79ceef1f0deba1c..a730a548109f6fe8927d30df2d018948cb1a7f02 100644 (file)
@@ -540,6 +540,8 @@ GNUNET_SERVER_create (GNUNET_CONNECTION_AccessCheck access, void *access_cls,
   struct GNUNET_NETWORK_Handle **lsocks;
   unsigned int i;
   unsigned int j;
+  unsigned int k;
+  int seen;
 
   i = 0;
   while (NULL != serverAddr[i])
@@ -551,6 +553,20 @@ GNUNET_SERVER_create (GNUNET_CONNECTION_AccessCheck access, void *access_cls,
     j = 0;
     while (NULL != serverAddr[i])
     {
+      seen = 0;
+      for (k=0;k<i-1;k++)
+       if ( (socklen[k] == socklen[i]) &&
+            (0 == memcmp (serverAddr[k], serverAddr[i], socklen[i])) )
+       {
+         seen = 1;
+         break;
+       }
+      if (0 != seen)
+      {
+       /* duplicate address, skip */
+       i++;
+       continue;
+      }
       lsocks[j] = open_listen_socket (serverAddr[i], socklen[i]);
       if (NULL != lsocks[j])
         j++;
index 078be7a41cc83cd6eb292c9c79b83c97e0f5a43e..cd73ceee44225815b40c3b47f078b2acb61f0541 100644 (file)
@@ -62,7 +62,6 @@ ready (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
   const struct GNUNET_CONFIGURATION_Handle *cfg = cls;
 
-
   GNUNET_assert (0 != (tc->reason & GNUNET_SCHEDULER_REASON_PREREQ_DONE));
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Service confirmed running\n");
   client = GNUNET_CLIENT_connect ("test_service", cfg);