aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-10-28 09:03:31 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-10-28 09:03:31 +0000
commit284cfa1a5085cc8bcbead3a68d381ae30e055c92 (patch)
tree7a7319e9396fd7c1a9389f4df87b93e3e5ec0f3c
parenta00687f5ec5816fc5ec8bcca25e4e49733b331d7 (diff)
downloadgnunet-284cfa1a5085cc8bcbead3a68d381ae30e055c92.tar.gz
gnunet-284cfa1a5085cc8bcbead3a68d381ae30e055c92.zip
keep alive task scheduling
-rw-r--r--src/transport/gnunet-service-transport_neighbours_3way.c44
1 files changed, 27 insertions, 17 deletions
diff --git a/src/transport/gnunet-service-transport_neighbours_3way.c b/src/transport/gnunet-service-transport_neighbours_3way.c
index 9828ec773..b09812f61 100644
--- a/src/transport/gnunet-service-transport_neighbours_3way.c
+++ b/src/transport/gnunet-service-transport_neighbours_3way.c
@@ -1784,6 +1784,7 @@ GST_neighbours_handle_connect_ack (const struct GNUNET_MessageHeader *message,
1784 struct NeighbourMapEntry *n; 1784 struct NeighbourMapEntry *n;
1785 size_t msg_len; 1785 size_t msg_len;
1786 size_t ret; 1786 size_t ret;
1787 int was_connected;
1787 1788
1788#if DEBUG_TRANSPORT 1789#if DEBUG_TRANSPORT
1789#endif 1790#endif
@@ -1823,7 +1824,9 @@ GST_neighbours_handle_connect_ack (const struct GNUNET_MessageHeader *message,
1823 plugin_name, sender_address, sender_address_len, 1824 plugin_name, sender_address, sender_address_len,
1824 session, ats, ats_count); 1825 session, ats, ats_count);
1825 1826
1826 change_state (n, S_CONNECTED); 1827 was_connected = is_connected(n);
1828 if (!is_connected(n))
1829 change_state (n, S_CONNECTED);
1827 1830
1828#if DEBUG_TRANSPORT 1831#if DEBUG_TRANSPORT
1829 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, 1832 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -1832,9 +1835,6 @@ GST_neighbours_handle_connect_ack (const struct GNUNET_MessageHeader *message,
1832#endif 1835#endif
1833 GST_neighbours_set_incoming_quota(&n->id, n->bandwidth_in); 1836 GST_neighbours_set_incoming_quota(&n->id, n->bandwidth_in);
1834 1837
1835 n->keepalive_task = GNUNET_SCHEDULER_add_delayed (KEEPALIVE_FREQUENCY,
1836 &neighbour_keepalive_task,
1837 n);
1838 /* send ACK (ACK)*/ 1838 /* send ACK (ACK)*/
1839 msg_len = sizeof (msg); 1839 msg_len = sizeof (msg);
1840 msg.size = htons (msg_len); 1840 msg.size = htons (msg_len);
@@ -1854,21 +1854,30 @@ GST_neighbours_handle_connect_ack (const struct GNUNET_MessageHeader *message,
1854 n->addrlen), 1854 n->addrlen),
1855 n->session); 1855 n->session);
1856 1856
1857 neighbours_connected++; 1857
1858 GNUNET_STATISTICS_update (GST_stats, gettext_noop ("# peers connected"), 1, 1858 if (!was_connected)
1859 GNUNET_NO); 1859 {
1860 connect_notify_cb (callback_cls, &n->id, ats, ats_count); 1860 if (n->keepalive_task == GNUNET_SCHEDULER_NO_TASK)
1861 n->keepalive_task = GNUNET_SCHEDULER_add_delayed (KEEPALIVE_FREQUENCY,
1862 &neighbour_keepalive_task,
1863 n);
1864
1865 neighbours_connected++;
1866 GNUNET_STATISTICS_update (GST_stats, gettext_noop ("# peers connected"), 1,
1867 GNUNET_NO);
1868 connect_notify_cb (callback_cls, &n->id, ats, ats_count);
1861 1869
1862#if DEBUG_TRANSPORT 1870#if DEBUG_TRANSPORT
1863 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 1871 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
1864 "Sending outbound quota of %u Bps for peer `%s' to all clients\n", 1872 "Sending outbound quota of %u Bps for peer `%s' to all clients\n",
1865 ntohl (n->bandwidth_out.value__), GNUNET_i2s (peer)); 1873 ntohl (n->bandwidth_out.value__), GNUNET_i2s (peer));
1866#endif 1874#endif
1867 q_msg.header.size = htons (sizeof (struct QuotaSetMessage)); 1875 q_msg.header.size = htons (sizeof (struct QuotaSetMessage));
1868 q_msg.header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SET_QUOTA); 1876 q_msg.header.type = htons (GNUNET_MESSAGE_TYPE_TRANSPORT_SET_QUOTA);
1869 q_msg.quota = n->bandwidth_out; 1877 q_msg.quota = n->bandwidth_out;
1870 q_msg.peer = (*peer); 1878 q_msg.peer = (*peer);
1871 GST_clients_broadcast (&q_msg.header, GNUNET_NO); 1879 GST_clients_broadcast (&q_msg.header, GNUNET_NO);
1880 }
1872} 1881}
1873 1882
1874void 1883void
@@ -1929,7 +1938,8 @@ GST_neighbours_handle_ack (const struct GNUNET_MessageHeader *message,
1929 1938
1930 GST_neighbours_set_incoming_quota(&n->id, n->bandwidth_in); 1939 GST_neighbours_set_incoming_quota(&n->id, n->bandwidth_in);
1931 1940
1932 n->keepalive_task = GNUNET_SCHEDULER_add_delayed (KEEPALIVE_FREQUENCY, 1941 if (n->keepalive_task == GNUNET_SCHEDULER_NO_TASK)
1942 n->keepalive_task = GNUNET_SCHEDULER_add_delayed (KEEPALIVE_FREQUENCY,
1933 &neighbour_keepalive_task, 1943 &neighbour_keepalive_task,
1934 n); 1944 n);
1935 1945