diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-04-12 11:20:04 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-04-12 11:20:04 +0000 |
commit | b3d66dd827b131fa77ed2d471f7b5ed91c8584c6 (patch) | |
tree | 8ed7d8b2cad11b0c73c17ab174a1a7639b985829 /src/transport/gnunet-service-transport.c | |
parent | dca2e627584720657437f519f7d12a5334acc2cc (diff) | |
download | gnunet-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.c | 30 |
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, | |||
1548 | static void | 1543 | static void |
1549 | update_addresses (struct TransportPlugin *plugin, int fresh) | 1544 | update_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 | ||