From 13121a349efdc9529d4c6c8590a8fbed0f34ce54 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 19 Jul 2010 12:49:02 +0000 Subject: [PATCH] fast timeout on disconnect --- src/core/gnunet-service-core.c | 10 ++++++++++ src/include/gnunet_constants.h | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/src/core/gnunet-service-core.c b/src/core/gnunet-service-core.c index 8cd598e83..52724e578 100644 --- a/src/core/gnunet-service-core.c +++ b/src/core/gnunet-service-core.c @@ -3717,6 +3717,7 @@ handle_transport_notify_disconnect (void *cls, { struct DisconnectNotifyMessage cnm; struct Neighbour *n; + struct GNUNET_TIME_Relative left; #if DEBUG_CORE GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, @@ -3741,6 +3742,15 @@ handle_transport_notify_disconnect (void *cls, gettext_noop ("# peers connected (transport)"), -1, GNUNET_NO); + if (n->dead_clean_task != GNUNET_SCHEDULER_NO_TASK) + GNUNET_SCHEDULER_cancel (sched, + n->dead_clean_task); + left = GNUNET_CONSTANTS_DISCONNECT_SESSION_TIMEOUT; + n->last_activity = GNUNET_TIME_absolute_subtract (GNUNET_TIME_absolute_get (), left); + n->dead_clean_task = GNUNET_SCHEDULER_add_delayed (sched, + left, + &consider_free_task, + n); } diff --git a/src/include/gnunet_constants.h b/src/include/gnunet_constants.h index c32add92a..56a868e2e 100644 --- a/src/include/gnunet_constants.h +++ b/src/include/gnunet_constants.h @@ -51,6 +51,12 @@ extern "C" */ #define GNUNET_CONSTANTS_IDLE_CONNECTION_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 5) +/** + * After how long do we consider a connection to a peer dead + * if we got an explicit disconnect and were unable to reconnect? + */ +#define GNUNET_CONSTANTS_DISCONNECT_SESSION_TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 5) + /** * How long do we delay reading more from a peer after a quota violation? */ -- 2.25.1