gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r8716 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r8716 - gnunet/src/transport
Date: Thu, 16 Jul 2009 15:49:43 -0600

Author: grothoff
Date: 2009-07-16 15:49:43 -0600 (Thu, 16 Jul 2009)
New Revision: 8716

Modified:
   gnunet/src/transport/gnunet-service-transport.c
   gnunet/src/transport/plugin_transport_tcp.c
   gnunet/src/transport/transport_api.c
Log:
bugfixes

Modified: gnunet/src/transport/gnunet-service-transport.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport.c     2009-07-16 21:48:20 UTC 
(rev 8715)
+++ gnunet/src/transport/gnunet-service-transport.c     2009-07-16 21:49:43 UTC 
(rev 8716)
@@ -1878,10 +1878,11 @@
     {
       n->plugins = rpos->next;
       GNUNET_assert (rpos->neighbour == n);
-      rpos->plugin->api->cancel (rpos->plugin->api->cls,
-                                 rpos->plugin_handle,
-                                rpos,
-                                &n->id);
+      if (GNUNET_YES == rpos->connected)
+       rpos->plugin->api->cancel (rpos->plugin->api->cls,
+                                  rpos->plugin_handle,
+                                  rpos,
+                                  &n->id);
       GNUNET_free (rpos);
     }
 
@@ -1892,7 +1893,9 @@
       GNUNET_assert (mq->neighbour == n);
       GNUNET_free (mq);
     }
-
+  if (n->timeout_task != GNUNET_SCHEDULER_NO_PREREQUISITE_TASK)
+    GNUNET_SCHEDULER_cancel (sched,
+                            n->timeout_task);
   /* finally, free n itself */
   GNUNET_free (n);
 }
@@ -2054,13 +2057,13 @@
                  GNUNET_i2s(&n->id));
 #endif
       /* TODO: call stats */
-      disconnect_neighbour (n);
       if ((service_context != NULL) &&
           (service_context->plugin_handle == plugin_context))
         {
           service_context->connected = GNUNET_NO;
           service_context->plugin_handle = NULL;
         }
+      disconnect_neighbour (n);
       return NULL;
     }
 #if DEBUG_TRANSPORT
@@ -2628,6 +2631,7 @@
     }
   if (my_private_key != NULL)
     GNUNET_CRYPTO_rsa_key_free (my_private_key);
+  GNUNET_free_non_null (our_hello);
 }
 
 
@@ -2642,10 +2646,10 @@
 main (int argc, char *const *argv)
 {
   return (GNUNET_OK ==
-          GNUNET_SERVICE_run (argc,
-                              argv,
-                              "transport",
-                              &run, NULL, &unload_plugins, NULL)) ? 0 : 1;
+         GNUNET_SERVICE_run (argc,
+                             argv,
+                             "transport",
+                             &run, NULL, &unload_plugins, NULL)) ? 0 : 1;
 }
 
 /* end of gnunet-service-transport.c */

Modified: gnunet/src/transport/plugin_transport_tcp.c
===================================================================
--- gnunet/src/transport/plugin_transport_tcp.c 2009-07-16 21:48:20 UTC (rev 
8715)
+++ gnunet/src/transport/plugin_transport_tcp.c 2009-07-16 21:49:43 UTC (rev 
8716)
@@ -415,8 +415,9 @@
 
   ret = plugin->sessions;
   while ((ret != NULL) &&
-         (0 != memcmp (target,
-                       &ret->target, sizeof (struct GNUNET_PeerIdentity))))
+        ( (GNUNET_SYSERR == ret->expecting_welcome) ||
+          (0 != memcmp (target,
+                        &ret->target, sizeof (struct GNUNET_PeerIdentity)))))
     ret = ret->next;
   return ret;
 }
@@ -834,6 +835,11 @@
                                     GNUNET_TIME_UNIT_ZERO,
                                     &session->target, NULL);
     }
+  if (session->client != NULL)
+    {
+      GNUNET_SERVER_client_drop (session->client);
+      session->client = NULL;
+    }
   GNUNET_free_non_null (session->connect_addr);
   GNUNET_free (session);
 }
@@ -2073,7 +2079,10 @@
 {
   struct GNUNET_TRANSPORT_PluginFunctions *api = cls;
   struct Plugin *plugin = api->cls;
+  struct Session *session;
 
+  while (NULL != (session = plugin->sessions))
+    disconnect_session (session);    
   GNUNET_SERVICE_stop (plugin->service);
   GNUNET_free (plugin->handlers);
   GNUNET_free (plugin);

Modified: gnunet/src/transport/transport_api.c
===================================================================
--- gnunet/src/transport/transport_api.c        2009-07-16 21:48:20 UTC (rev 
8715)
+++ gnunet/src/transport/transport_api.c        2009-07-16 21:49:43 UTC (rev 
8716)
@@ -378,7 +378,7 @@
   if (buf == NULL)
     {
 #if DEBUG_TRANSPORT
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+      GNUNET_log (GNUNET_ERROR_TYPE_INFO,
                  "Could not transmit to transport service, cancelling pending 
requests\n");
 #endif
       th = h->connect_ready_head;
@@ -785,6 +785,27 @@
   struct HelloWaitList *pos;
   struct HelloWaitList *prev;
 
+  hwl->task = GNUNET_SCHEDULER_NO_PREREQUISITE_TASK;
+  if (GNUNET_TIME_absolute_get_remaining (hwl->timeout).value > 0)
+    {
+#if DEBUG_TRANSPORT
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                 _("First attempt to obtain `%s' from transport service 
failed, will try again for %llums.\n"),
+                 "HELLO",
+                 GNUNET_TIME_absolute_get_remaining (hwl->timeout).value);
+#endif
+      hwl->task = GNUNET_SCHEDULER_add_delayed (hwl->handle->sched,
+                                                GNUNET_YES,
+                                                GNUNET_SCHEDULER_PRIORITY_KEEP,
+                                                
GNUNET_SCHEDULER_NO_PREREQUISITE_TASK,
+                                                
GNUNET_TIME_absolute_get_remaining (hwl->timeout),
+                                                &hello_wait_timeout, hwl);
+      return;      
+    }
+  /* signal timeout */
+  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+              _("Timeout trying to obtain `%s' from transport service.\n"),
+              "HELLO");
   prev = NULL;
   pos = hwl->handle->hwl_head;
   while (pos != hwl)
@@ -797,10 +818,6 @@
     hwl->handle->hwl_head = hwl->next;
   else
     prev->next = hwl->next;
-  GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
-              _("Timeout trying to obtain `%s' from transport service.\n"),
-              "HELLO");
-  /* signal timeout */
   if (hwl->rec != NULL)
     hwl->rec (hwl->rec_cls, GNUNET_TIME_UNIT_ZERO, NULL, NULL);
   GNUNET_free (hwl);
@@ -932,7 +949,7 @@
   if (buf == NULL)
     {
 #if DEBUG_TRANSPORT
-      GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                   "Timeout while trying to transmit `%s' request.\n",
                   "START");
 #endif
@@ -1152,7 +1169,8 @@
   schedule_control_transmit (h,
                              sizeof (struct GNUNET_MessageHeader),
                              GNUNET_YES,
-                             GNUNET_TIME_UNIT_FOREVER_REL, &send_start, NULL);
+                             GNUNET_TIME_UNIT_FOREVER_REL, 
+                            &send_start, NULL);
   GNUNET_CLIENT_receive (h->client,
                          &demultiplexer, h, GNUNET_TIME_UNIT_FOREVER_REL);
 }





reply via email to

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