gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r17834 - gnunet/src/transport
Date: Fri, 28 Oct 2011 11:03:31 +0200

Author: wachs
Date: 2011-10-28 11:03:31 +0200 (Fri, 28 Oct 2011)
New Revision: 17834

Modified:
   gnunet/src/transport/gnunet-service-transport_neighbours_3way.c
Log:
keep alive task scheduling


Modified: gnunet/src/transport/gnunet-service-transport_neighbours_3way.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_neighbours_3way.c     
2011-10-28 08:44:41 UTC (rev 17833)
+++ gnunet/src/transport/gnunet-service-transport_neighbours_3way.c     
2011-10-28 09:03:31 UTC (rev 17834)
@@ -1784,6 +1784,7 @@
   struct NeighbourMapEntry *n;
   size_t msg_len;
   size_t ret;
+  int was_connected;
 
 #if DEBUG_TRANSPORT
 #endif
@@ -1823,7 +1824,9 @@
                              plugin_name, sender_address, sender_address_len,
                              session, ats, ats_count);
 
-  change_state (n, S_CONNECTED);
+  was_connected = is_connected(n);
+  if (!is_connected(n))
+    change_state (n, S_CONNECTED);
 
 #if DEBUG_TRANSPORT
   GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -1832,9 +1835,6 @@
 #endif
   GST_neighbours_set_incoming_quota(&n->id, n->bandwidth_in);
 
-  n->keepalive_task = GNUNET_SCHEDULER_add_delayed (KEEPALIVE_FREQUENCY,
-                                                      
&neighbour_keepalive_task,
-                                                      n);
   /* send ACK (ACK)*/
   msg_len =  sizeof (msg);
   msg.size = htons (msg_len);
@@ -1854,21 +1854,30 @@
                                                                  n->addrlen),
               n->session);
 
-  neighbours_connected++;
-  GNUNET_STATISTICS_update (GST_stats, gettext_noop ("# peers connected"), 1,
-                            GNUNET_NO);
-  connect_notify_cb (callback_cls, &n->id, ats, ats_count);
 
+  if (!was_connected)
+  {
+    if (n->keepalive_task == GNUNET_SCHEDULER_NO_TASK)
+      n->keepalive_task = GNUNET_SCHEDULER_add_delayed (KEEPALIVE_FREQUENCY,
+                                                        
&neighbour_keepalive_task,
+                                                        n);
+
+    neighbours_connected++;
+    GNUNET_STATISTICS_update (GST_stats, gettext_noop ("# peers connected"), 1,
+                              GNUNET_NO);
+    connect_notify_cb (callback_cls, &n->id, ats, ats_count);
+
 #if DEBUG_TRANSPORT
-  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              "Sending outbound quota of %u Bps for peer `%s' to all 
clients\n",
-              ntohl (n->bandwidth_out.value__), GNUNET_i2s (peer));
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "Sending outbound quota of %u Bps for peer `%s' to all 
clients\n",
+                ntohl (n->bandwidth_out.value__), GNUNET_i2s (peer));
 #endif
-  q_msg.header.size = htons (sizeof (struct QuotaSetMessage));
-  q_msg.header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SET_QUOTA);
-  q_msg.quota = n->bandwidth_out;
-  q_msg.peer = (*peer);
-  GST_clients_broadcast (&q_msg.header, GNUNET_NO);
+    q_msg.header.size = htons (sizeof (struct QuotaSetMessage));
+    q_msg.header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SET_QUOTA);
+    q_msg.quota = n->bandwidth_out;
+    q_msg.peer = (*peer);
+    GST_clients_broadcast (&q_msg.header, GNUNET_NO);
+  }
 }
 
 void
@@ -1929,7 +1938,8 @@
 
   GST_neighbours_set_incoming_quota(&n->id, n->bandwidth_in);
 
-  n->keepalive_task = GNUNET_SCHEDULER_add_delayed (KEEPALIVE_FREQUENCY,
+  if (n->keepalive_task == GNUNET_SCHEDULER_NO_TASK)
+    n->keepalive_task = GNUNET_SCHEDULER_add_delayed (KEEPALIVE_FREQUENCY,
                                                       
&neighbour_keepalive_task,
                                                       n);
 




reply via email to

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