X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Futil%2Ftest_server_with_client.c;h=5b6e517183a280829c71460a7e19b59d930da51c;hb=bab8aca50cdead171292a5e834ad542254dabe3e;hp=4f3048f340ea8aba6ef6a34f369f790b81ec7153;hpb=f0aa7bc0a136b1e436018ef72e1c814f04c33379;p=oweals%2Fgnunet.git diff --git a/src/util/test_server_with_client.c b/src/util/test_server_with_client.c index 4f3048f34..5b6e51718 100644 --- a/src/util/test_server_with_client.c +++ b/src/util/test_server_with_client.c @@ -4,7 +4,7 @@ GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published - by the Free Software Foundation; either version 2, or (at your + by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but @@ -30,7 +30,7 @@ #include "gnunet_server_lib.h" #include "gnunet_time_lib.h" -#define VERBOSE GNUNET_NO +#define VERBOSE GNUNET_EXTRA_LOGGING #define PORT 22335 @@ -41,8 +41,6 @@ static struct GNUNET_SERVER_Handle *server; static struct GNUNET_CLIENT_Connection *client; -static struct GNUNET_SCHEDULER_Handle *sched; - static struct GNUNET_CONFIGURATION_Handle *cfg; static int ok; @@ -51,6 +49,7 @@ static void send_done (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct GNUNET_SERVER_Client *argclient = cls; + GNUNET_assert (ok == 3); ok++; GNUNET_SERVER_receive_done (argclient, GNUNET_OK); @@ -58,8 +57,7 @@ send_done (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) static void -recv_cb (void *cls, - struct GNUNET_SERVER_Client *argclient, +recv_cb (void *cls, struct GNUNET_SERVER_Client *argclient, const struct GNUNET_MessageHeader *message) { void *addr; @@ -68,8 +66,7 @@ recv_cb (void *cls, struct sockaddr_in *have; GNUNET_assert (GNUNET_OK == - GNUNET_SERVER_client_get_address (argclient, - &addr, &addrlen)); + GNUNET_SERVER_client_get_address (argclient, &addr, &addrlen)); GNUNET_assert (addrlen == sizeof (struct sockaddr_in)); have = addr; @@ -83,26 +80,32 @@ recv_cb (void *cls, GNUNET_assert (0 == memcmp (&sa, addr, addrlen)); GNUNET_free (addr); switch (ok) - { - case 2: - ok++; - GNUNET_SCHEDULER_add_delayed (sched, - GNUNET_YES, - GNUNET_SCHEDULER_PRIORITY_KEEP, - GNUNET_SCHEDULER_NO_TASK, - GNUNET_TIME_relative_multiply - (GNUNET_TIME_UNIT_MILLISECONDS, 50), - &send_done, argclient); - break; - case 4: - ok++; - GNUNET_CLIENT_disconnect (client); - GNUNET_SERVER_receive_done (argclient, GNUNET_OK); - break; - default: - GNUNET_assert (0); - } + { + case 2: + ok++; + GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply + (GNUNET_TIME_UNIT_MILLISECONDS, 50), + &send_done, argclient); + break; + case 4: + ok++; + GNUNET_CLIENT_disconnect (client, GNUNET_YES); + GNUNET_SERVER_receive_done (argclient, GNUNET_OK); + break; + default: + GNUNET_assert (0); + } + +} + +static void +clean_up (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) +{ + GNUNET_SERVER_destroy (server); + server = NULL; + GNUNET_CONFIGURATION_destroy (cfg); + cfg = NULL; } @@ -116,10 +119,11 @@ recv_cb (void *cls, static void notify_disconnect (void *cls, struct GNUNET_SERVER_Client *client) { + if (client == NULL) + return; GNUNET_assert (ok == 5); ok = 0; - GNUNET_SCHEDULER_shutdown (sched); - GNUNET_CONFIGURATION_destroy (cfg); + GNUNET_SCHEDULER_add_now (&clean_up, NULL); } @@ -151,40 +155,38 @@ static void task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct sockaddr_in sa; + struct sockaddr *sap[2]; + socklen_t slens[2]; - sched = tc->sched; + sap[0] = (struct sockaddr *) &sa; + slens[0] = sizeof (sa); + sap[1] = NULL; + slens[1] = 0; memset (&sa, 0, sizeof (sa)); #if HAVE_SOCKADDR_IN_SIN_LEN sa.sin_len = sizeof (sa); #endif sa.sin_family = AF_INET; sa.sin_port = htons (PORT); - server = GNUNET_SERVER_create (tc->sched, - NULL, - NULL, - (const struct sockaddr *) &sa, - sizeof (sa), - 1024, - GNUNET_TIME_relative_multiply - (GNUNET_TIME_UNIT_MILLISECONDS, 250), - GNUNET_NO); + server = + GNUNET_SERVER_create (NULL, NULL, sap, slens, + GNUNET_TIME_relative_multiply + (GNUNET_TIME_UNIT_MILLISECONDS, 250), GNUNET_NO); GNUNET_assert (server != NULL); handlers[0].callback_cls = cls; GNUNET_SERVER_add_handlers (server, handlers); GNUNET_SERVER_disconnect_notify (server, ¬ify_disconnect, cls); cfg = GNUNET_CONFIGURATION_create (); GNUNET_CONFIGURATION_set_value_number (cfg, "test", "PORT", PORT); - GNUNET_CONFIGURATION_set_value_string (cfg, "test", "HOSTNAME", - "localhost"); + GNUNET_CONFIGURATION_set_value_string (cfg, "test", "HOSTNAME", "localhost"); GNUNET_CONFIGURATION_set_value_string (cfg, "resolver", "HOSTNAME", "localhost"); - client = GNUNET_CLIENT_connect (tc->sched, "test", cfg); + client = GNUNET_CLIENT_connect ("test", cfg); GNUNET_assert (client != NULL); - GNUNET_CLIENT_notify_transmit_ready (client, - 256, + GNUNET_CLIENT_notify_transmit_ready (client, 256, GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MILLISECONDS, 250), - ¬ify_ready, NULL); + GNUNET_NO, ¬ify_ready, NULL); }