gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r3346 - in GNUnet: . src/server src/transports src/util/net


From: grothoff
Subject: [GNUnet-SVN] r3346 - in GNUnet: . src/server src/transports src/util/network
Date: Fri, 1 Sep 2006 14:36:07 -0700 (PDT)

Author: grothoff
Date: 2006-09-01 14:36:02 -0700 (Fri, 01 Sep 2006)
New Revision: 3346

Modified:
   GNUnet/src/server/connection.c
   GNUnet/src/server/gnunetd.c
   GNUnet/src/transports/tcp.c
   GNUnet/src/transports/tcp_helper.c
   GNUnet/src/util/network/select.c
   GNUnet/todo
Log:
fixing shutdown sequence

Modified: GNUnet/src/server/connection.c
===================================================================
--- GNUnet/src/server/connection.c      2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/src/server/connection.c      2006-09-01 21:36:02 UTC (rev 3346)
@@ -2791,7 +2791,6 @@
   SendCallbackList *scl;
 
   ENTRY();
-  transport->stop();
   GC_detach_change_listener(cfg,
                            &connectionConfigChangeCallback,
                            NULL);
@@ -2822,6 +2821,7 @@
     FREE(scl);
   }
   scl_nextTail = NULL;
+  transport->stop();
   releaseService(transport);
   transport = NULL;
   releaseService(identity);

Modified: GNUnet/src/server/gnunetd.c
===================================================================
--- GNUnet/src/server/gnunetd.c 2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/src/server/gnunetd.c 2006-09-01 21:36:02 UTC (rev 3346)
@@ -191,6 +191,7 @@
     return -1;
   }
   ectx = GE_create_context_stderr(NO, 
+                                 GE_DEBUG |
                                  GE_WARNING | GE_ERROR | GE_FATAL |
                                  GE_USER | GE_ADMIN | GE_DEVELOPER |
                                  GE_IMMEDIATE | GE_BULK);

Modified: GNUnet/src/transports/tcp.c
===================================================================
--- GNUnet/src/transports/tcp.c 2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/src/transports/tcp.c 2006-09-01 21:36:02 UTC (rev 3346)
@@ -31,7 +31,7 @@
 #include "platform.h"
 #include "ip.h"
 
-#define DEBUG_TCP NO
+#define DEBUG_TCP YES
 
 /**
  * after how much time of the core not being associated with a tcp
@@ -252,6 +252,13 @@
     socket_destroy(s);
     return SYSERR;
   }
+#if DEBUG_TCP
+  GE_LOG(ectx,
+        GE_DEBUG | GE_DEVELOPER | GE_BULK,
+        "Establishing connection to %u.%u.%u.%u:%u\n",
+        PRIP(ntohl(*(int*)&haddr->ip)),
+        ntohs(haddr->port));
+#endif
   return tcpConnectHelper(helo,
                          s,
                          tcpAPI.protocolNumber,

Modified: GNUnet/src/transports/tcp_helper.c
===================================================================
--- GNUnet/src/transports/tcp_helper.c  2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/src/transports/tcp_helper.c  2006-09-01 21:36:02 UTC (rev 3346)
@@ -96,6 +96,7 @@
 static int tcpDisconnect(TSession * tsession) {
   TCPSession * tcpsession = tsession->internal;
 
+  GE_ASSERT(ectx, selector != NULL);
   MUTEX_LOCK(tcpsession->lock);
   tcpsession->users--;
   if (tcpsession->users > 0) {
@@ -159,8 +160,10 @@
   P2P_PACKET * mp;
   const TCPWelcome * welcome;
 
-  if (SYSERR == tcpAssociate(tsession))
+  if (SYSERR == tcpAssociate(tsession)) {
+    GE_BREAK(ectx, 0);
     return SYSERR;
+  }
   len = ntohs(msg->size);
   if (stats != NULL)
     stats->change(stat_bytesReceived,
@@ -170,6 +173,9 @@
     welcome = (const TCPWelcome*) msg;
     if ( (ntohs(welcome->header.type) != 0) ||
         (len != sizeof(TCPWelcome)) ) {
+      GE_LOG(ectx,
+            GE_WARNING | GE_USER | GE_BULK,
+            _("Received malformed message instead of welcome message. 
Closing.\n"));
       tcpDisconnect(tsession);
       return SYSERR;    
     }
@@ -213,8 +219,19 @@
   TSession * tsession;
   TCPSession * tcpSession;
 
-  if (NO != blt(addr, addr_len))
+  if (NO != blt(addr, addr_len)) {
+#if DEBUG_TCP
+    GE_LOG(ectx,
+          GE_DEBUG | GE_USER | GE_BULK, 
+          "Rejecting TCP connection (blacklisted).\n");
+#endif
     return NULL;
+  }
+#if DEBUG_TCP
+  GE_LOG(ectx,
+        GE_DEBUG | GE_USER | GE_BULK, 
+        "Accepting TCP connection.\n");
+#endif
   tcpSession = MALLOC(sizeof(TCPSession));
   tcpSession->sock = sock;
   /* fill in placeholder identity to mark that we
@@ -261,6 +278,11 @@
     if (stats != NULL)
       stats->change(stat_bytesDropped,
                    size);
+#if DEBUG_TCP
+    GE_LOG(ectx,
+          GE_DEBUG | GE_USER | GE_BULK, 
+          "Could not sent TCP message -- tcp transport is down.\n");
+#endif
     return SYSERR;
   }
   if (size == 0) {
@@ -271,6 +293,11 @@
     if (stats != NULL)
       stats->change(stat_bytesDropped,
                    size);
+#if DEBUG_TCP
+    GE_LOG(ectx,
+          GE_DEBUG | GE_USER | GE_BULK, 
+          "Could not sent TCP message -- other side closed connection.\n");
+#endif
     return SYSERR; /* other side closed connection */
   }
   mp = MALLOC(sizeof(MESSAGE_HEADER) + size);
@@ -334,6 +361,11 @@
                        &welcome.header,
                        sizeof(TCPWelcome),
                        YES)) {
+#if DEBUG_TCP
+    GE_LOG(ectx,
+          GE_DEBUG | GE_USER | GE_BULK, 
+          "Could not sent TCP welcome message, closing connection.\n");
+#endif
     /* disconnect caller -- error! */
     tcpDisconnect(tsession);
     MUTEX_UNLOCK(tcplock);

Modified: GNUnet/src/util/network/select.c
===================================================================
--- GNUnet/src/util/network/select.c    2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/src/util/network/select.c    2006-09-01 21:36:02 UTC (rev 3346)
@@ -30,6 +30,8 @@
 #include "platform.h"
 #include "network.h"
 
+#define DEBUG_SELECT YES
+
 /**
  * Select Session handle.
  */
@@ -157,6 +159,12 @@
   static char i = '\0';
   int ret;
 
+#if DEBUG_SELECT
+  GE_LOG(sh->ectx,
+        GE_DEBUG | GE_DEVELOPER | GE_BULK,
+        "Signaling select %p.\n",
+        sh);    
+#endif
   ret = WRITE(sh->signal_pipe[1],
              &i,
              sizeof(char));
@@ -178,6 +186,13 @@
                           Session * s) { 
   int i;
 
+#if DEBUG_SELECT
+  GE_LOG(sh->ectx,
+        GE_DEBUG | GE_DEVELOPER | GE_BULK,
+        "Destroying session %p of select %p.\n",
+        sh,
+        s);     
+#endif
   sh->ch(sh->ch_cls,
         sh,
         s->sock,
@@ -229,6 +244,14 @@
                    &session->rbuff[session->pos],
                    session->rsize - session->pos,
                    &recvd);
+#if DEBUG_SELECT
+  GE_LOG(sh->ectx,
+        GE_DEBUG | GE_DEVELOPER | GE_BULK,
+        "Receiving from session %p of select %p return %d.\n",
+        sh,
+        session,
+        ret);   
+#endif
   if (ret != OK) {
     destroySession(sh, session);
     return SYSERR; /* other side closed connection */
@@ -286,6 +309,14 @@
   int ret;
   size_t size;
 
+#if DEBUG_SELECT
+  GE_LOG(sh->ectx,
+        GE_DEBUG | GE_DEVELOPER | GE_BULK,
+        "Write and process called for session %p of select %p status %d.\n",
+        sh,
+        session,
+        sh->shutdown);  
+#endif
   sock = session->sock;
   while (sh->shutdown == NO) {
     ret = socket_send(sock,
@@ -293,6 +324,15 @@
                      session->wbuff,
                      session->wpos,
                      &size);
+#if DEBUG_SELECT
+    GE_LOG(sh->ectx,
+          GE_DEBUG | GE_DEVELOPER | GE_BULK,
+          "Sending %d bytes from session %p of select %p return %d.\n",
+          session->wpos,
+          sh,
+          session,
+          ret);         
+#endif
     if (ret == SYSERR) {
       GE_LOG_STRERROR(sh->ectx,
                      GE_WARNING | GE_USER | GE_ADMIN | GE_BULK,
@@ -384,8 +424,22 @@
       struct SocketHandle * sock = session->sock;
 
       if (! socket_test_valid(sock)) {
+#if DEBUG_SELECT
+       GE_LOG(sh->ectx,
+              GE_DEBUG | GE_DEVELOPER | GE_BULK,
+              "Select %p destroys invalid client handle %p\n",
+              sh,
+              session);         
+#endif
        destroySession(sh, session);
       } else {
+#if DEBUG_SELECT
+       GE_LOG(sh->ectx,
+              GE_DEBUG | GE_DEVELOPER | GE_BULK,
+              "Select %p adds to select set connection %p\n",
+              sh,
+              session);         
+#endif
        add_to_select_set(sock, &readSet, &max);
        add_to_select_set(sock, &errorSet, &max);
        if (session->wpos > 0)
@@ -422,6 +476,13 @@
       s = ACCEPT(sh->listen_sock->handle,
                 (struct sockaddr *) clientAddr,
                 &lenOfIncomingAddr);
+#if DEBUG_SELECT
+      GE_LOG(sh->ectx,
+            GE_DEBUG | GE_DEVELOPER | GE_BULK,
+            "Select %p is accepting connection: %d\n",
+            sh,
+            s);         
+#endif
       if (s == -1) {   
        GE_LOG_STRERROR(sh->ectx,
                        GE_WARNING | GE_ADMIN | GE_BULK,
@@ -435,6 +496,13 @@
                      sock,
                      clientAddr,
                      lenOfIncomingAddr);
+#if DEBUG_SELECT
+       GE_LOG(sh->ectx,
+              GE_DEBUG | GE_DEVELOPER | GE_BULK,
+              "Select %p is accepting connection: %p\n",
+              sh,
+              sctx);    
+#endif
        if (sctx == NULL) {
          socket_destroy(sock);
        } else {
@@ -623,6 +691,12 @@
 void select_destroy(struct SelectHandle * sh) {
   void * unused;
 
+#if DEBUG_SELECT
+  GE_LOG(sh->ectx,
+        GE_DEBUG | GE_DEVELOPER | GE_BULK,
+        "Destroying select %p\n",
+        sh);    
+#endif
   sh->shutdown = YES;
   signalSelect(sh);
   PTHREAD_STOP_SLEEP(sh->thread);
@@ -667,6 +741,14 @@
   unsigned short len;
   int fresh_write;
 
+#if DEBUG_SELECT
+  GE_LOG(sh->ectx,
+        GE_DEBUG | GE_DEVELOPER | GE_BULK,
+        "Adding message of size %u to %p of select %p\n",
+        ntohs(msg->size),
+        sock,
+        sh);    
+#endif
   session = NULL;
   len = ntohs(msg->size);
   MUTEX_LOCK(sh->lock);
@@ -702,6 +784,13 @@
                   void * sock_ctx) {
   Session * session;   
   
+#if DEBUG_SELECT
+  GE_LOG(sh->ectx,
+        GE_DEBUG | GE_DEVELOPER | GE_BULK,
+        "Adding connection %p to selector %p\n",
+        sock,
+        sh);    
+#endif
   session = MALLOC(sizeof(Session));
   memset(session, 0, sizeof(Session));
   session->sock = sock;
@@ -727,6 +816,13 @@
   Session * session;
   int i;
 
+#if DEBUG_SELECT
+  GE_LOG(sh->ectx,
+        GE_DEBUG | GE_DEVELOPER | GE_BULK,
+        "Removing connection %p from selector %p\n",
+        sock,
+        sh);    
+#endif
   session = NULL;
   MUTEX_LOCK(sh->lock);
   for (i=0;i<sh->sessionCount;i++) 

Modified: GNUnet/todo
===================================================================
--- GNUnet/todo 2006-08-29 18:57:35 UTC (rev 3345)
+++ GNUnet/todo 2006-09-01 21:36:02 UTC (rev 3346)
@@ -16,7 +16,6 @@
 - finish util refactoring: [RC]
   * $GNUNET_HOME directory creation (where?)
   * util: 
-    + statuscalls: load always extremely high (2^31 ++)
     + network/io: load monitor support
     + loggers: SMTP logger
     + use new loggers in for CS error reporting





reply via email to

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