gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r4045 - in GNUnet: . src/transports src/util/network


From: grothoff
Subject: [GNUnet-SVN] r4045 - in GNUnet: . src/transports src/util/network
Date: Sat, 23 Dec 2006 21:15:04 -0800 (PST)

Author: grothoff
Date: 2006-12-23 21:15:01 -0800 (Sat, 23 Dec 2006)
New Revision: 4045

Modified:
   GNUnet/ChangeLog
   GNUnet/src/transports/tcp.c
   GNUnet/src/transports/tcp6.c
   GNUnet/src/util/network/select.c
Log:
tcp fix

Modified: GNUnet/ChangeLog
===================================================================
--- GNUnet/ChangeLog    2006-12-24 05:05:18 UTC (rev 4044)
+++ GNUnet/ChangeLog    2006-12-24 05:15:01 UTC (rev 4045)
@@ -1,3 +1,8 @@
+Sat Dec 23 22:12:17 MST 2006
+       Updated various man pages and some configuration documentation.
+       Fixed TCP transport (did not work with NAT if port was set to 0).
+       Fixed verbose option for gnunet-transport-check.
+       
 Fri Dec 22 19:21:25 MST 2006
        Added option to set maximum number of file descriptors
        (convenience for OS X users where the default is too low).

Modified: GNUnet/src/transports/tcp.c
===================================================================
--- GNUnet/src/transports/tcp.c 2006-12-24 05:05:18 UTC (rev 4044)
+++ GNUnet/src/transports/tcp.c 2006-12-24 05:15:01 UTC (rev 4045)
@@ -322,7 +322,8 @@
         sizeof(soaddr));
   soaddr.sin_family = AF_INET;
 
-  GE_ASSERT(ectx, sizeof(struct in_addr) == sizeof(IPaddr));
+  GE_ASSERT(ectx, 
+           sizeof(struct in_addr) == sizeof(IPaddr));
   memcpy(&soaddr.sin_addr,
         &haddr->ip,
         sizeof(IPaddr));
@@ -369,48 +370,48 @@
     return SYSERR;
   }
   port = getGNUnetTCPPort();
-  if (port == 0) {
-    /* read-only TCP */
-    return OK;
-  }
-  s = SOCKET(PF_INET,
-            SOCK_STREAM,
-            0);
-  if (s < 0) {
-    GE_LOG_STRERROR(ectx,
-                   GE_ERROR | GE_ADMIN | GE_BULK,
-                   "socket");
-    return SYSERR;
-  }
-  if (SETSOCKOPT(s,
-                SOL_SOCKET,
-                SO_REUSEADDR,
-                &on,
-                sizeof(on)) < 0 )
-    GE_DIE_STRERROR(ectx,
-                   GE_FATAL | GE_ADMIN | GE_IMMEDIATE,
-                   "setsockopt");
-  memset((char *) &serverAddr,
-        0,
-        sizeof(serverAddr));
-  serverAddr.sin_family      = AF_INET;
-  serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
-  serverAddr.sin_port        = htons(getGNUnetTCPPort());
-  if (BIND(s,
-          (struct sockaddr *) &serverAddr,
-          sizeof(serverAddr)) < 0) {
-    GE_LOG_STRERROR(ectx,
-                   GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
+  if (port != 0) {
+    s = SOCKET(PF_INET,
+              SOCK_STREAM,
+              0);
+    if (s < 0) {
+      GE_LOG_STRERROR(ectx,
+                     GE_ERROR | GE_ADMIN | GE_BULK,
+                     "socket");
+      return SYSERR;
+    }
+    if (SETSOCKOPT(s,
+                  SOL_SOCKET,
+                  SO_REUSEADDR,
+                  &on,
+                  sizeof(on)) < 0 )
+      GE_DIE_STRERROR(ectx,
+                     GE_FATAL | GE_ADMIN | GE_IMMEDIATE,
+                     "setsockopt");
+    memset((char *) &serverAddr,
+          0,
+          sizeof(serverAddr));
+    serverAddr.sin_family      = AF_INET;
+    serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
+    serverAddr.sin_port        = htons(getGNUnetTCPPort());
+    if (BIND(s,
+            (struct sockaddr *) &serverAddr,
+            sizeof(serverAddr)) < 0) {
+      GE_LOG_STRERROR(ectx,
+                     GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
                    "bind");
-    GE_LOG(ectx,
-          GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
+      GE_LOG(ectx,
+            GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
           _("Failed to start transport service on port %d.\n"),
-          getGNUnetTCPPort());
-    if (0 != CLOSE(s))
-      GE_LOG_STRERROR(ectx,
-                     GE_ERROR | GE_USER | GE_ADMIN | GE_BULK,
-                     "close");
-    return SYSERR;
+            getGNUnetTCPPort());
+      if (0 != CLOSE(s))
+       GE_LOG_STRERROR(ectx,
+                       GE_ERROR | GE_USER | GE_ADMIN | GE_BULK,
+                       "close");
+      return SYSERR;
+    }
+  } else {
+    s = -1; /* no listening! */
   }
   selector = select_create("tcp",
                           NO,

Modified: GNUnet/src/transports/tcp6.c
===================================================================
--- GNUnet/src/transports/tcp6.c        2006-12-24 05:05:18 UTC (rev 4044)
+++ GNUnet/src/transports/tcp6.c        2006-12-24 05:15:01 UTC (rev 4045)
@@ -341,47 +341,49 @@
     return SYSERR;
   }
   port = getGNUnetTCP6Port();
-  if (port == 0)
-    return OK; /* read-only TCP6 */
-  s = SOCKET(PF_INET6,
-            SOCK_STREAM,
-            0);
-  if (s < 0) {
-    GE_LOG_STRERROR(ectx,
-                   GE_ERROR | GE_ADMIN | GE_BULK,
-                   "socket");
-    return SYSERR;
-  }
-  if (SETSOCKOPT(s,
-                SOL_SOCKET,
-                SO_REUSEADDR,
-                &on,
-                sizeof(on)) < 0 )
-    GE_DIE_STRERROR(ectx,
-                   GE_FATAL | GE_ADMIN | GE_IMMEDIATE,
-                   "setsockopt");
-  memset((char *) &serverAddr,
-        0,
-        sizeof(serverAddr));
-  serverAddr.sin6_family   = AF_INET6;
-  serverAddr.sin6_flowinfo = 0;
-  serverAddr.sin6_addr     = in6addr_any;
-  serverAddr.sin6_port     = htons(getGNUnetTCP6Port());
-  if (BIND(s,
-          (struct sockaddr *) &serverAddr,
-          sizeof(serverAddr)) < 0) {
-    GE_LOG_STRERROR(ectx,
-                   GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
-                   "bind");
-    GE_LOG(ectx,
-          GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
-          _("Failed to start transport service on port %d.\n"),
-          getGNUnetTCP6Port());
-    if (0 != CLOSE(s))
+  if (port != 0) {
+    s = SOCKET(PF_INET6,
+              SOCK_STREAM,
+              0);
+    if (s < 0) {
       GE_LOG_STRERROR(ectx,
-                     GE_ERROR | GE_USER | GE_ADMIN | GE_BULK,
-                     "close");
-    return SYSERR;
+                     GE_ERROR | GE_ADMIN | GE_BULK,
+                     "socket");
+      return SYSERR;
+    }
+    if (SETSOCKOPT(s,
+                  SOL_SOCKET,
+                  SO_REUSEADDR,
+                  &on,
+                  sizeof(on)) < 0 )
+      GE_DIE_STRERROR(ectx,
+                     GE_FATAL | GE_ADMIN | GE_IMMEDIATE,
+                     "setsockopt");
+    memset((char *) &serverAddr,
+          0,
+          sizeof(serverAddr));
+    serverAddr.sin6_family   = AF_INET6;
+    serverAddr.sin6_flowinfo = 0;
+    serverAddr.sin6_addr     = in6addr_any;
+    serverAddr.sin6_port     = htons(getGNUnetTCP6Port());
+    if (BIND(s,
+            (struct sockaddr *) &serverAddr,
+            sizeof(serverAddr)) < 0) {
+      GE_LOG_STRERROR(ectx,
+                     GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
+                     "bind");
+      GE_LOG(ectx,
+            GE_ERROR | GE_ADMIN | GE_IMMEDIATE,
+            _("Failed to start transport service on port %d.\n"),
+            getGNUnetTCP6Port());
+      if (0 != CLOSE(s))
+       GE_LOG_STRERROR(ectx,
+                       GE_ERROR | GE_USER | GE_ADMIN | GE_BULK,
+                       "close");
+      return SYSERR;
+    }
+  } else {
+    s = -1;
   }
   selector = select_create("tcp6",
                           NO,

Modified: GNUnet/src/util/network/select.c
===================================================================
--- GNUnet/src/util/network/select.c    2006-12-24 05:05:18 UTC (rev 4044)
+++ GNUnet/src/util/network/select.c    2006-12-24 05:15:01 UTC (rev 4045)
@@ -106,7 +106,7 @@
 
   /**
    * sock is the tcp socket that we listen on for new inbound
-   * connections.
+   * connections.  Maybe NULL if we are not listening.
    */
   struct SocketHandle * listen_sock;
 
@@ -796,6 +796,7 @@
   SelectHandle * sh;
 
   if ( (is_udp == NO) &&
+       (sock != -1) && 
        (0 != LISTEN(sock, 5)) ) {
     GE_LOG_STRERROR(ectx,
                    GE_ERROR | GE_USER | GE_IMMEDIATE,
@@ -837,9 +838,12 @@
   sh->memory_quota = memory_quota;
   sh->timeout = timeout;
   sh->lock = MUTEX_CREATE(YES);
-  sh->listen_sock = socket_create(ectx,
-                                 mon,
-                                 sock);
+  if (sock != -1)
+    sh->listen_sock = socket_create(ectx,
+                                   mon,
+                                   sock);
+  else
+    sh->listen_sock = NULL;
   sh->thread = PTHREAD_CREATE(&selectThread,
                              sh,
                              4 * 1024);
@@ -847,7 +851,8 @@
     GE_LOG_STRERROR(ectx,
                    GE_ERROR | GE_IMMEDIATE | GE_ADMIN,
                    "pthread_create");
-    socket_destroy(sh->listen_sock);
+    if (sh->listen_sock != NULL)
+      socket_destroy(sh->listen_sock);
     if ( (0 != CLOSE(sh->signal_pipe[0])) ||
         (0 != CLOSE(sh->signal_pipe[1])) )
       GE_LOG_STRERROR(ectx,





reply via email to

[Prev in Thread] Current Thread [Next in Thread]