From f13b91df9b44684456a1b60db33a10f6d260f936 Mon Sep 17 00:00:00 2001 From: Sree Harsha Totakura Date: Thu, 14 Feb 2013 16:46:58 +0000 Subject: [PATCH] fix 2793: Testbed does not allow to set TIMEOUT for operations --- src/testbed/gnunet-service-testbed.c | 25 ++++++++++++++++++------- src/testbed/gnunet-service-testbed.h | 10 +++++----- src/testbed/gnunet-service-testbed_oc.c | 8 ++++---- src/testbed/testbed.conf.in | 1 + 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/testbed/gnunet-service-testbed.c b/src/testbed/gnunet-service-testbed.c index f1dc3fab9..70fe1786f 100644 --- a/src/testbed/gnunet-service-testbed.c +++ b/src/testbed/gnunet-service-testbed.c @@ -73,6 +73,11 @@ struct ForwardedOperationContext *fopcq_tail; */ struct OperationQueue *GST_opq_openfds; +/** + * Timeout for operations which may take some time + */ +const struct GNUNET_TIME_Relative GST_timeout; + /** * The size of the host list */ @@ -765,7 +770,7 @@ lcf_proc_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) &lcf_forwarded_operation_reply_relay, lcf); lcf->fopc->timeout_task = - GNUNET_SCHEDULER_add_delayed (TIMEOUT, &lcf_forwarded_operation_timeout, + GNUNET_SCHEDULER_add_delayed (GST_timeout, &lcf_forwarded_operation_timeout, lcf); GNUNET_CONTAINER_DLL_insert_tail (fopcq_head, fopcq_tail, lcf->fopc); lcf->state = FINISHED; @@ -1558,7 +1563,7 @@ handle_peer_create (void *cls, struct GNUNET_SERVER_Client *client, &msg->header, peer_create_success_cb, fo_ctxt); fo_ctxt->timeout_task = - GNUNET_SCHEDULER_add_delayed (TIMEOUT, &peer_create_forward_timeout, + GNUNET_SCHEDULER_add_delayed (GST_timeout, &peer_create_forward_timeout, fo_ctxt); GNUNET_CONTAINER_DLL_insert_tail (fopcq_head, fopcq_tail, fo_ctxt); GNUNET_SERVER_receive_done (client, GNUNET_OK); @@ -1610,7 +1615,7 @@ handle_peer_destroy (void *cls, struct GNUNET_SERVER_Client *client, fopc->operation_id, &msg->header, &peer_destroy_success_cb, fopc); fopc->timeout_task = - GNUNET_SCHEDULER_add_delayed (TIMEOUT, &GST_forwarded_operation_timeout, + GNUNET_SCHEDULER_add_delayed (GST_timeout, &GST_forwarded_operation_timeout, fopc); GNUNET_CONTAINER_DLL_insert_tail (fopcq_head, fopcq_tail, fopc); GNUNET_SERVER_receive_done (client, GNUNET_OK); @@ -1669,7 +1674,7 @@ handle_peer_start (void *cls, struct GNUNET_SERVER_Client *client, &GST_forwarded_operation_reply_relay, fopc); fopc->timeout_task = - GNUNET_SCHEDULER_add_delayed (TIMEOUT, &GST_forwarded_operation_timeout, + GNUNET_SCHEDULER_add_delayed (GST_timeout, &GST_forwarded_operation_timeout, fopc); GNUNET_CONTAINER_DLL_insert_tail (fopcq_head, fopcq_tail, fopc); GNUNET_SERVER_receive_done (client, GNUNET_OK); @@ -1739,7 +1744,7 @@ handle_peer_stop (void *cls, struct GNUNET_SERVER_Client *client, &GST_forwarded_operation_reply_relay, fopc); fopc->timeout_task = - GNUNET_SCHEDULER_add_delayed (TIMEOUT, &GST_forwarded_operation_timeout, + GNUNET_SCHEDULER_add_delayed (GST_timeout, &GST_forwarded_operation_timeout, fopc); GNUNET_CONTAINER_DLL_insert_tail (fopcq_head, fopcq_tail, fopc); GNUNET_SERVER_receive_done (client, GNUNET_OK); @@ -1815,7 +1820,7 @@ handle_peer_get_config (void *cls, struct GNUNET_SERVER_Client *client, &GST_forwarded_operation_reply_relay, fopc); fopc->timeout_task = - GNUNET_SCHEDULER_add_delayed (TIMEOUT, &GST_forwarded_operation_timeout, + GNUNET_SCHEDULER_add_delayed (GST_timeout, &GST_forwarded_operation_timeout, fopc); GNUNET_CONTAINER_DLL_insert_tail (fopcq_head, fopcq_tail, fopc); GNUNET_SERVER_receive_done (client, GNUNET_OK); @@ -2196,9 +2201,15 @@ testbed_run (void *cls, struct GNUNET_SERVER_Handle *server, GNUNET_CONFIGURATION_get_value_number (cfg, "TESTBED", "MAX_OPEN_FDS", &num)); GST_opq_openfds = GNUNET_TESTBED_operation_queue_create_ ((unsigned int) num); + GNUNET_assert (GNUNET_OK == + GNUNET_CONFIGURATION_get_value_time (cfg, "TESTBED", + "OPERATION_TIMEOUT", + (struct + GNUNET_TIME_Relative *) + &GST_timeout)); GNUNET_assert (GNUNET_OK == GNUNET_CONFIGURATION_get_value_string (cfg, "testbed", - "HOSTNAME", &hostname)); + "HOSTNAME", &hostname)); our_config = GNUNET_CONFIGURATION_dup (cfg); GNUNET_SERVER_add_handlers (server, message_handlers); GNUNET_SERVER_disconnect_notify (server, &client_disconnect_cb, NULL); diff --git a/src/testbed/gnunet-service-testbed.h b/src/testbed/gnunet-service-testbed.h index ebf3c66f9..1d465318c 100644 --- a/src/testbed/gnunet-service-testbed.h +++ b/src/testbed/gnunet-service-testbed.h @@ -54,11 +54,6 @@ */ #define LIST_GROW_STEP 10 -/** - * Default timeout for operations which may take some time - */ -#define TIMEOUT GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 15) - /** * A routing entry @@ -610,6 +605,11 @@ extern struct Slave **GST_slave_list; */ extern struct OperationQueue *GST_opq_openfds; +/** + * Timeout for operations which may take some time + */ +const extern struct GNUNET_TIME_Relative GST_timeout; + /** * The size of the peer list */ diff --git a/src/testbed/gnunet-service-testbed_oc.c b/src/testbed/gnunet-service-testbed_oc.c index 9b571e3dd..8bed69f36 100644 --- a/src/testbed/gnunet-service-testbed_oc.c +++ b/src/testbed/gnunet-service-testbed_oc.c @@ -381,7 +381,7 @@ GST_process_next_focc (struct RegisteredHostContext *rhc) GNUNET_free (focc->orig_msg); focc->orig_msg = NULL; fopc->timeout_task = - GNUNET_SCHEDULER_add_delayed (TIMEOUT, &forwarded_overlay_connect_timeout, + GNUNET_SCHEDULER_add_delayed (GST_timeout, &forwarded_overlay_connect_timeout, fopc); GNUNET_CONTAINER_DLL_insert_tail (fopcq_head, fopcq_tail, fopc); } @@ -1221,7 +1221,7 @@ GST_handle_overlay_connect (void *cls, struct GNUNET_SERVER_Client *client, &GST_forwarded_operation_reply_relay, fopc); fopc->timeout_task = - GNUNET_SCHEDULER_add_delayed (TIMEOUT, &GST_forwarded_operation_timeout, + GNUNET_SCHEDULER_add_delayed (GST_timeout, &GST_forwarded_operation_timeout, fopc); GNUNET_CONTAINER_DLL_insert_tail (fopcq_head, fopcq_tail, fopc); GNUNET_SERVER_receive_done (client, GNUNET_OK); @@ -1264,7 +1264,7 @@ GST_handle_overlay_connect (void *cls, struct GNUNET_SERVER_Client *client, occ->peer2_controller = peer2_controller; GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == occ->timeout_task); occ->timeout_task = - GNUNET_SCHEDULER_add_delayed (TIMEOUT, &timeout_overlay_connect, occ); + GNUNET_SCHEDULER_add_delayed (GST_timeout, &timeout_overlay_connect, occ); /* Get the identity of the second peer */ if (NULL != occ->peer2_controller) { @@ -1564,7 +1564,7 @@ GST_handle_remote_overlay_connect (void *cls, &cache_transport_peer_connect_notify, rocc); rocc->timeout_rocc_task_id = - GNUNET_SCHEDULER_add_delayed (TIMEOUT, &timeout_rocc_task, rocc); + GNUNET_SCHEDULER_add_delayed (GST_timeout, &timeout_rocc_task, rocc); GNUNET_SERVER_receive_done (client, GNUNET_OK); } diff --git a/src/testbed/testbed.conf.in b/src/testbed/testbed.conf.in index ec05c769b..379cd22d1 100644 --- a/src/testbed/testbed.conf.in +++ b/src/testbed/testbed.conf.in @@ -4,6 +4,7 @@ AUTOSTART = NO HOSTNAME = localhost HOME = $SERVICEHOME BINARY = gnunet-service-testbed +OPERATION_TIMEOUT = 30 s # Set this to the path where the testbed helper is installed # HELPER_BINARY_PATH = @prefix@/lib/gnunet/libexec/gnunet-helper-testbed ACCEPT_FROM = 127.0.0.1; -- 2.25.1