gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r18689 - in gnunet/src: ats transport


From: gnunet
Subject: [GNUnet-SVN] r18689 - in gnunet/src: ats transport
Date: Mon, 19 Dec 2011 15:25:34 +0100

Author: wachs
Date: 2011-12-19 15:25:34 +0100 (Mon, 19 Dec 2011)
New Revision: 18689

Modified:
   gnunet/src/ats/ats_api_scheduling.c
   gnunet/src/transport/gnunet-service-transport_neighbours.c
Log:
fixes for mantis #1988
and cleanup


Modified: gnunet/src/ats/ats_api_scheduling.c
===================================================================
--- gnunet/src/ats/ats_api_scheduling.c 2011-12-19 14:10:15 UTC (rev 18688)
+++ gnunet/src/ats/ats_api_scheduling.c 2011-12-19 14:25:34 UTC (rev 18689)
@@ -1018,6 +1018,11 @@
   size_t namelen;
   size_t msize;
 
+  if ((address == NULL) && (session == NULL))
+  {
+    GNUNET_break (0);
+  }
+
   namelen =
       (address->transport_name ==
        NULL) ? 0 : strlen (address->transport_name) + 1;

Modified: gnunet/src/transport/gnunet-service-transport_neighbours.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_neighbours.c  2011-12-19 
14:10:15 UTC (rev 18688)
+++ gnunet/src/transport/gnunet-service-transport_neighbours.c  2011-12-19 
14:25:34 UTC (rev 18689)
@@ -874,9 +874,8 @@
   if (is_disconnecting (n))
     return;
 
-
   /* send DISCONNECT MESSAGE */
-  if ((previous_state == S_CONNECTED) || is_connecting (n))
+  if (previous_state == S_CONNECTED)
   {
     if (GNUNET_OK == send_disconnect (&n->id, n->address, n->session))
       GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sent DISCONNECT_MSG to `%s'\n",
@@ -926,22 +925,22 @@
   switch (previous_state)
   {
   case S_CONNECTED:
-//      GNUNET_assert (neighbours_connected > 0);
+    GNUNET_assert (neighbours_connected > 0);
     neighbours_connected--;
     GNUNET_assert (GNUNET_SCHEDULER_NO_TASK != n->keepalive_task);
     GNUNET_SCHEDULER_cancel (n->keepalive_task);
     n->keepalive_task = GNUNET_SCHEDULER_NO_TASK;
+    n->expect_latency_response = GNUNET_NO;
     GNUNET_STATISTICS_update (GST_stats, gettext_noop ("# peers connected"), 
-1,
                               GNUNET_NO);
     disconnect_notify_cb (callback_cls, &n->id);
     break;
   case S_FAST_RECONNECT:
-    GNUNET_STATISTICS_update (GST_stats, gettext_noop ("# peers connected"), 
-1,
-                              GNUNET_NO);
     GNUNET_STATISTICS_update (GST_stats,
                               gettext_noop ("# fast reconnects failed"), 1,
                               GNUNET_NO);
     disconnect_notify_cb (callback_cls, &n->id);
+    break;
   default:
     break;
   }
@@ -1014,11 +1013,11 @@
   struct GNUNET_MessageHeader m;
   int ret;
 
+  GNUNET_assert (S_CONNECTED == n->state);
   n->keepalive_task =
       GNUNET_SCHEDULER_add_delayed (KEEPALIVE_FREQUENCY,
                                     &neighbour_keepalive_task, n);
 
-  GNUNET_assert (S_CONNECTED == n->state);
   GNUNET_STATISTICS_update (GST_stats, gettext_noop ("# keepalives sent"), 1,
                             GNUNET_NO);
   m.size = htons (sizeof (struct GNUNET_MessageHeader));
@@ -1716,31 +1715,37 @@
   if (S_CONNECTED != n->state)
     return;
 
+  if (n->keepalive_task != GNUNET_SCHEDULER_NO_TASK)
+  {
+    GNUNET_SCHEDULER_cancel (n->keepalive_task);
+    n->keepalive_task = GNUNET_SCHEDULER_NO_TASK;
+    n->expect_latency_response = GNUNET_NO;
+  }
+
   /* connected, try fast reconnect */
+  /* statistics "transport" : "# peers connected" -= 1
+   * neighbours_connected -= 1
+   * BUT: no disconnect_cb to notify clients about disconnect
+   */
 #if DEBUG_TRANSPORT
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Trying fast reconnect to peer `%s'\n",
               GNUNET_i2s (peer));
 #endif
+  GNUNET_assert (neighbours_connected > 0);
   change_state (n, S_FAST_RECONNECT);
-  GNUNET_assert (neighbours_connected > 0);
   neighbours_connected--;
+  GNUNET_STATISTICS_update (GST_stats, gettext_noop ("# peers connected"), -1,
+                            GNUNET_NO);
 
-  if (n->keepalive_task != GNUNET_SCHEDULER_NO_TASK)
-  {
-    GNUNET_SCHEDULER_cancel (n->keepalive_task);
-    n->keepalive_task = GNUNET_SCHEDULER_NO_TASK;
-  }
 
   /* We are connected, so ask ATS to switch addresses */
   GNUNET_SCHEDULER_cancel (n->timeout_task);
-  n->timeout_task =
-      GNUNET_SCHEDULER_add_delayed 
(GNUNET_CONSTANTS_DISCONNECT_SESSION_TIMEOUT,
+  n->timeout_task = GNUNET_SCHEDULER_add_delayed 
(GNUNET_CONSTANTS_DISCONNECT_SESSION_TIMEOUT,
                                     &neighbour_timeout_task, n);
   /* try QUICKLY to re-establish a connection, reduce timeout! */
   if (n->ats_suggest != GNUNET_SCHEDULER_NO_TASK)
     GNUNET_SCHEDULER_cancel (n->ats_suggest);
-  n->ats_suggest =
-      GNUNET_SCHEDULER_add_delayed (ATS_RESPONSE_TIMEOUT, &ats_suggest_cancel,
+  n->ats_suggest = GNUNET_SCHEDULER_add_delayed (ATS_RESPONSE_TIMEOUT, 
&ats_suggest_cancel,
                                     n);
   GNUNET_ATS_suggest_address (GST_ats, peer);
 }
@@ -1995,7 +2000,7 @@
   }
 
   n = lookup_neighbour (neighbour);
-  if (NULL == n)
+  if ((NULL == n) || (n->state != S_CONNECTED))
   {
     GNUNET_STATISTICS_update (GST_stats,
                               gettext_noop




reply via email to

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