aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-service-transport.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-04-12 11:20:04 +0000
committerChristian Grothoff <christian@grothoff.org>2010-04-12 11:20:04 +0000
commitb3d66dd827b131fa77ed2d471f7b5ed91c8584c6 (patch)
tree8ed7d8b2cad11b0c73c17ab174a1a7639b985829 /src/transport/gnunet-service-transport.c
parentdca2e627584720657437f519f7d12a5334acc2cc (diff)
downloadgnunet-b3d66dd827b131fa77ed2d471f7b5ed91c8584c6.tar.gz
gnunet-b3d66dd827b131fa77ed2d471f7b5ed91c8584c6.zip
fix refresh
Diffstat (limited to 'src/transport/gnunet-service-transport.c')
-rw-r--r--src/transport/gnunet-service-transport.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/src/transport/gnunet-service-transport.c b/src/transport/gnunet-service-transport.c
index 9956473a7..dfb90ca9c 100644
--- a/src/transport/gnunet-service-transport.c
+++ b/src/transport/gnunet-service-transport.c
@@ -92,11 +92,6 @@
92#define HELLO_VERIFICATION_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30) 92#define HELLO_VERIFICATION_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 30)
93 93
94/** 94/**
95 * How long will we allow sending of a ping to be delayed?
96 */
97#define TRANSPORT_DEFAULT_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 15)
98
99/**
100 * Priority to use for PONG messages. 95 * Priority to use for PONG messages.
101 */ 96 */
102#define TRANSPORT_PONG_PRIORITY 4 97#define TRANSPORT_PONG_PRIORITY 4
@@ -1548,6 +1543,7 @@ expire_address_task (void *cls,
1548static void 1543static void
1549update_addresses (struct TransportPlugin *plugin, int fresh) 1544update_addresses (struct TransportPlugin *plugin, int fresh)
1550{ 1545{
1546 static struct GNUNET_TIME_Absolute last_update;
1551 struct GNUNET_TIME_Relative min_remaining; 1547 struct GNUNET_TIME_Relative min_remaining;
1552 struct GNUNET_TIME_Relative remaining; 1548 struct GNUNET_TIME_Relative remaining;
1553 struct GNUNET_TIME_Absolute now; 1549 struct GNUNET_TIME_Absolute now;
@@ -1561,7 +1557,7 @@ update_addresses (struct TransportPlugin *plugin, int fresh)
1561 plugin->address_update_task = GNUNET_SCHEDULER_NO_TASK; 1557 plugin->address_update_task = GNUNET_SCHEDULER_NO_TASK;
1562 now = GNUNET_TIME_absolute_get (); 1558 now = GNUNET_TIME_absolute_get ();
1563 min_remaining = GNUNET_TIME_UNIT_FOREVER_REL; 1559 min_remaining = GNUNET_TIME_UNIT_FOREVER_REL;
1564 expired = GNUNET_NO; 1560 expired = (GNUNET_TIME_absolute_get_duration (last_update).value > (HELLO_ADDRESS_EXPIRATION.value / 4));
1565 prev = NULL; 1561 prev = NULL;
1566 pos = plugin->addresses; 1562 pos = plugin->addresses;
1567 while (pos != NULL) 1563 while (pos != NULL)
@@ -1573,9 +1569,7 @@ update_addresses (struct TransportPlugin *plugin, int fresh)
1573 if (prev == NULL) 1569 if (prev == NULL)
1574 plugin->addresses = pos->next; 1570 plugin->addresses = pos->next;
1575 else 1571 else
1576 prev->next = pos->next; 1572 prev->next = pos->next;
1577
1578
1579 GNUNET_free (pos); 1573 GNUNET_free (pos);
1580 } 1574 }
1581 else 1575 else
@@ -1589,13 +1583,17 @@ update_addresses (struct TransportPlugin *plugin, int fresh)
1589 } 1583 }
1590 1584
1591 if (expired || fresh) 1585 if (expired || fresh)
1592 refresh_hello (); 1586 {
1593 if (min_remaining.value < GNUNET_TIME_UNIT_FOREVER_REL.value) 1587 last_update = now;
1594 plugin->address_update_task 1588 refresh_hello ();
1595 = GNUNET_SCHEDULER_add_delayed (plugin->env.sched, 1589 }
1596 min_remaining, 1590 min_remaining = GNUNET_TIME_relative_min (min_remaining,
1597 &expire_address_task, plugin); 1591 GNUNET_TIME_relative_divide (HELLO_ADDRESS_EXPIRATION,
1598 1592 2));
1593 plugin->address_update_task
1594 = GNUNET_SCHEDULER_add_delayed (plugin->env.sched,
1595 min_remaining,
1596 &expire_address_task, plugin);
1599} 1597}
1600 1598
1601 1599