X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Ftransport%2Ftest_transport_api_restart_1peer.c;h=adec15f4f5c204157e95a33c256aa91a07ac250d;hb=29e6158507a0758192075ac6ece7ba8e75ddc49a;hp=f0d5d56608955c5bb426c089720f4e01d09128fd;hpb=769c3e9561ea577ca167c74286a5cd092510a5cb;p=oweals%2Fgnunet.git diff --git a/src/transport/test_transport_api_restart_1peer.c b/src/transport/test_transport_api_restart_1peer.c index f0d5d5660..adec15f4f 100644 --- a/src/transport/test_transport_api_restart_1peer.c +++ b/src/transport/test_transport_api_restart_1peer.c @@ -1,6 +1,6 @@ /* This file is part of GNUnet. - (C) 2009, 2010 Christian Grothoff (and other contributing authors) + Copyright (C) 2009, 2010, 2015 GNUnet e.V. GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with GNUnet; see the file COPYING. If not, write to the - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ /** * @file transport/test_transport_api_restart_1peer.c @@ -45,11 +45,11 @@ static char *test_name; static int ok; -static GNUNET_SCHEDULER_TaskIdentifier die_task; +static struct GNUNET_SCHEDULER_Task *die_task; -static GNUNET_SCHEDULER_TaskIdentifier send_task; +static struct GNUNET_SCHEDULER_Task *send_task; -static GNUNET_SCHEDULER_TaskIdentifier reconnect_task; +static struct GNUNET_ATS_ConnectivitySuggestHandle *ats_sh; static struct PeerContext *p1; @@ -59,7 +59,7 @@ static struct PeerContext *p2; static int p2_connected; -static GNUNET_TRANSPORT_TESTING_ConnectRequest cc; +static struct GNUNET_TRANSPORT_TESTING_ConnectRequest *cc; static struct GNUNET_TRANSPORT_TransmitHandle *th; @@ -75,105 +75,100 @@ static int restarted; static void end () { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Stopping peers\n"); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Stopping peers\n"); - if (send_task != GNUNET_SCHEDULER_NO_TASK) + if (NULL != send_task) + { GNUNET_SCHEDULER_cancel (send_task); - send_task = GNUNET_SCHEDULER_NO_TASK; - - if (reconnect_task != GNUNET_SCHEDULER_NO_TASK) - GNUNET_SCHEDULER_cancel (reconnect_task); - reconnect_task = GNUNET_SCHEDULER_NO_TASK; - - if (die_task != GNUNET_SCHEDULER_NO_TASK) + send_task = NULL; + } + if (NULL != ats_sh) + { + GNUNET_ATS_connectivity_suggest_cancel (ats_sh); + ats_sh = NULL; + } + if (NULL != die_task) + { GNUNET_SCHEDULER_cancel (die_task); - die_task = GNUNET_SCHEDULER_NO_TASK; - - if (th != NULL) + die_task = NULL; + } + if (NULL != th) + { GNUNET_TRANSPORT_notify_transmit_ready_cancel (th); - th = NULL; - - GNUNET_TRANSPORT_TESTING_stop_peer (tth, p1); - p1 = NULL; - GNUNET_TRANSPORT_TESTING_stop_peer (tth, p2); - p2 = NULL; + th = NULL; + } + if (NULL != p1) + { + GNUNET_TRANSPORT_TESTING_stop_peer (tth, p1); + p1 = NULL; + } + if (NULL != p2) + { + GNUNET_TRANSPORT_TESTING_stop_peer (tth, p2); + p2 = NULL; + } } + static void -end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) +end_badly (void *cls) { - die_task = GNUNET_SCHEDULER_NO_TASK; + die_task = NULL; - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Fail! Stopping peers\n"); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Fail! Stopping peers\n"); if (restarted == GNUNET_YES) - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Peer was restarted\n"); + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Peer was restarted\n"); if (restarted == GNUNET_NO) - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Peer was NOT restarted\n"); - - if (reconnect_task != GNUNET_SCHEDULER_NO_TASK) - GNUNET_SCHEDULER_cancel (reconnect_task); - reconnect_task = GNUNET_SCHEDULER_NO_TASK; - - if (send_task != GNUNET_SCHEDULER_NO_TASK) - GNUNET_SCHEDULER_cancel (send_task); - send_task = GNUNET_SCHEDULER_NO_TASK; - - if (cc != NULL) + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + "Peer was NOT restarted\n"); + if (NULL != cc) { - GNUNET_log (GNUNET_ERROR_TYPE_ERROR, _("Fail! Could not connect peers\n")); + GNUNET_log (GNUNET_ERROR_TYPE_ERROR, + _("Fail! Could not connect peers\n")); GNUNET_TRANSPORT_TESTING_connect_peers_cancel (tth, cc); cc = NULL; } - - if (th != NULL) - GNUNET_TRANSPORT_notify_transmit_ready_cancel (th); - th = NULL; - - if (p1 != NULL) - GNUNET_TRANSPORT_TESTING_stop_peer (tth, p1); - if (p2 != NULL) - GNUNET_TRANSPORT_TESTING_stop_peer (tth, p2); - + end (); ok = GNUNET_SYSERR; } -static void -reconnect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) -{ - struct PeerContext *p = cls; - - reconnect_task = GNUNET_SCHEDULER_NO_TASK; - - GNUNET_TRANSPORT_try_connect (p->th, &p2->id, NULL, NULL); /*FIXME TRY_CONNECT change */ - reconnect_task = - GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &reconnect, p); -} static void restart_cb (struct PeerContext *p, void *cls) { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Restarted peer %u (`%4s'), issuing reconnect\n", p->no, + "Restarted peer %u (`%4s'), issuing reconnect\n", + p->no, GNUNET_i2s (&p->id)); - - reconnect_task = GNUNET_SCHEDULER_add_now (&reconnect, p); + ats_sh = GNUNET_ATS_connectivity_suggest (p->ats, + &p2->id, + 1); } + static void -restart (struct PeerContext *p, char *cfg_file) +restart (struct PeerContext *p, + const char *cfg_file) { - GNUNET_assert (p != NULL); - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Restarting peer %u (`%4s')\n", p->no, + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Restarting peer %u (`%4s')\n", + p->no, GNUNET_i2s (&p->id)); - GNUNET_TRANSPORT_TESTING_restart_peer (tth, p, cfg_file, &restart_cb, p); - return; + GNUNET_TRANSPORT_TESTING_restart_peer (p, + cfg_file, + &restart_cb, + p); } + static void -notify_receive (void *cls, const struct GNUNET_PeerIdentity *peer, +notify_receive (void *cls, + const struct GNUNET_PeerIdentity *peer, const struct GNUNET_MessageHeader *message) { struct PeerContext *p = cls; @@ -214,7 +209,7 @@ notify_receive (void *cls, const struct GNUNET_PeerIdentity *peer, { GNUNET_break (0); ok = 1; - if (die_task != GNUNET_SCHEDULER_NO_TASK) + if (die_task != NULL) GNUNET_SCHEDULER_cancel (die_task); die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL); } @@ -229,11 +224,11 @@ notify_ready (void *cls, size_t size, void *buf) th = NULL; - if (buf == NULL) + if (NULL == buf) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Timeout occurred while waiting for transmit_ready\n"); - if (GNUNET_SCHEDULER_NO_TASK != die_task) + if (NULL != die_task) GNUNET_SCHEDULER_cancel (die_task); die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL); ok = 42; @@ -241,29 +236,34 @@ notify_ready (void *cls, size_t size, void *buf) } GNUNET_assert (size >= 256); + hdr = buf; + hdr->size = htons (sizeof (struct GNUNET_MessageHeader)); + hdr->type = htons (MTYPE); - if (buf != NULL) { - hdr = buf; - hdr->size = htons (sizeof (struct GNUNET_MessageHeader)); - hdr->type = htons (MTYPE); + char *ps = GNUNET_strdup (GNUNET_i2s (&p2->id)); + + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Peer %u (`%4s') sending message with type %u and size %u bytes to peer %u (`%4s')\n", + p2->no, + ps, + ntohs (hdr->type), + ntohs (hdr->size), + p->no, + GNUNET_i2s (&p->id)); + GNUNET_free (ps); } - char *ps = GNUNET_strdup (GNUNET_i2s (&p2->id)); - - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Peer %u (`%4s') sending message with type %u and size %u bytes to peer %u (`%4s')\n", - p2->no, ps, ntohs (hdr->type), ntohs (hdr->size), p->no, - GNUNET_i2s (&p->id)); - GNUNET_free (ps); return sizeof (struct GNUNET_MessageHeader); } static void -sendtask (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) +sendtask (void *cls) { - send_task = GNUNET_SCHEDULER_NO_TASK; + const struct GNUNET_SCHEDULER_TaskContext *tc; + send_task = NULL; + tc = GNUNET_SCHEDULER_get_task_context (); if ((tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN) != 0) return; char *receiver_s = GNUNET_strdup (GNUNET_i2s (&p1->id)); @@ -273,14 +273,18 @@ sendtask (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) p2->no, GNUNET_i2s (&p2->id), p1->no, receiver_s); GNUNET_free (receiver_s); - th = GNUNET_TRANSPORT_notify_transmit_ready (p2->th, &p1->id, 256, - TIMEOUT_TRANSMIT, ¬ify_ready, + th = GNUNET_TRANSPORT_notify_transmit_ready (p2->th, + &p1->id, + 256, + TIMEOUT_TRANSMIT, + ¬ify_ready, p1); } static void -notify_connect (void *cls, const struct GNUNET_PeerIdentity *peer) +notify_connect (void *cls, + const struct GNUNET_PeerIdentity *peer) { static int c; @@ -340,9 +344,9 @@ notify_disconnect (void *cls, const struct GNUNET_PeerIdentity *peer) if (th != NULL) GNUNET_TRANSPORT_notify_transmit_ready_cancel (th); th = NULL; - if (GNUNET_SCHEDULER_NO_TASK != send_task) + if (NULL != send_task) GNUNET_SCHEDULER_cancel (send_task); - send_task = GNUNET_SCHEDULER_NO_TASK; + send_task = NULL; } static void @@ -405,7 +409,7 @@ run (void *cls, char *const *args, const char *cfgfile, if ((p1 == NULL) || (p2 == NULL)) { GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Fail! Could not start peers!\n"); - if (die_task != GNUNET_SCHEDULER_NO_TASK) + if (die_task != NULL) GNUNET_SCHEDULER_cancel (die_task); die_task = GNUNET_SCHEDULER_add_now (&end_badly, NULL); return; @@ -425,7 +429,7 @@ check () GNUNET_GETOPT_OPTION_END }; - send_task = GNUNET_SCHEDULER_NO_TASK; + send_task = NULL; ok = 1; GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, argv, test_name,