From af7547fbce7e27513d862c0098fbcb5bdfb678b9 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Wed, 25 Apr 2012 14:45:39 +0000 Subject: [PATCH] -handle timeout better --- src/util/test_service.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/util/test_service.c b/src/util/test_service.c index cd73ceee4..92aefc63f 100644 --- a/src/util/test_service.c +++ b/src/util/test_service.c @@ -44,11 +44,31 @@ static int ok = 1; static struct GNUNET_CLIENT_Connection *client; + + +static void +do_stop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) +{ + GNUNET_CLIENT_disconnect (client); + client = NULL; + GNUNET_SERVICE_stop (sctx); + sctx = NULL; +} + + static size_t build_msg (void *cls, size_t size, void *buf) { struct GNUNET_MessageHeader *msg = buf; + if (size < sizeof (struct GNUNET_MessageHeader)) + { + /* timeout */ + GNUNET_SCHEDULER_add_now (&do_stop, NULL); + ok = 1; + return 0; + } + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Client connected, transmitting\n"); GNUNET_assert (size >= sizeof (struct GNUNET_MessageHeader)); msg->type = htons (MY_TYPE); @@ -75,14 +95,6 @@ ready (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) } -static void -do_stop (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) -{ - GNUNET_CLIENT_disconnect (client); - GNUNET_SERVICE_stop (sctx); -} - - static void recv_cb (void *cls, struct GNUNET_SERVER_Client *sc, const struct GNUNET_MessageHeader *message) -- 2.25.1