X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fcore%2Ftest_core_api.c;h=38aaf63b175afdb1944448fa8e20d73d47d4ede1;hb=30082674cb0bb93bb8d636baef7d72fc7850bbdf;hp=65b09c8353fe0f85429ffe6ce823c17fc12840b2;hpb=75a33a1499cf60ea4364c9aa673816629a6c1413;p=oweals%2Fgnunet.git diff --git a/src/core/test_core_api.c b/src/core/test_core_api.c index 65b09c835..38aaf63b1 100644 --- a/src/core/test_core_api.c +++ b/src/core/test_core_api.c @@ -35,14 +35,8 @@ #include "gnunet_transport_service.h" #define VERBOSE GNUNET_NO - #define START_ARM GNUNET_YES -/** - * How long until we give up on transmitting the message? - */ -#define TIMEOUT GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 60) - #define MTYPE 12345 struct PeerContext @@ -62,6 +56,7 @@ static struct PeerContext p1; static struct PeerContext p2; +static GNUNET_SCHEDULER_TaskIdentifier err_task; static int ok; @@ -100,18 +95,61 @@ terminate_task_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) } +static size_t +transmit_ready (void *cls, size_t size, void *buf) +{ + struct PeerContext *p = cls; + struct GNUNET_MessageHeader *m; + + GNUNET_assert (ok == 4); + OKPP; + GNUNET_assert (p == &p1); + GNUNET_assert (buf != NULL); + m = (struct GNUNET_MessageHeader *) buf; + m->type = htons (MTYPE); + m->size = htons (sizeof (struct GNUNET_MessageHeader)); + err_task = + GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 120), + &terminate_task_error, NULL); + + return sizeof (struct GNUNET_MessageHeader); +} + + static void connect_notify (void *cls, const struct GNUNET_PeerIdentity *peer, - struct GNUNET_TIME_Relative latency, - uint32_t distance) + const struct GNUNET_TRANSPORT_ATS_Information *atsi) { struct PeerContext *pc = cls; + + if (0 == memcmp (&pc->id, + peer, + sizeof (struct GNUNET_PeerIdentity))) + return; GNUNET_assert (pc->connect_status == 0); pc->connect_status = 1; - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Encrypted connection established to peer `%4s'\n", - GNUNET_i2s (peer)); + if (pc == &p1) + { + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Encrypted connection established to peer `%4s'\n", + GNUNET_i2s (peer)); + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "Asking core (1) for transmission to peer `%4s'\n", + GNUNET_i2s (&p2.id)); + if (NULL == GNUNET_CORE_notify_transmit_ready (p1.ch, + GNUNET_YES, + 0, + GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 45), + &p2.id, + sizeof (struct GNUNET_MessageHeader), + &transmit_ready, &p1)) + { + GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + "RECEIVED NULL when asking core (1) for transmission to peer `%4s'\n", + GNUNET_i2s (&p2.id)); + } + } } @@ -120,6 +158,11 @@ disconnect_notify (void *cls, const struct GNUNET_PeerIdentity *peer) { struct PeerContext *pc = cls; + + if (0 == memcmp (&pc->id, + peer, + sizeof (struct GNUNET_PeerIdentity))) + return; pc->connect_status = 0; GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Encrypted connection to `%4s' cut\n", GNUNET_i2s (peer)); @@ -130,8 +173,7 @@ static int inbound_notify (void *cls, const struct GNUNET_PeerIdentity *other, const struct GNUNET_MessageHeader *message, - struct GNUNET_TIME_Relative latency, - uint32_t distance) + const struct GNUNET_TRANSPORT_ATS_Information *atsi) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Core provides inbound data from `%4s'.\n", GNUNET_i2s (other)); @@ -143,8 +185,7 @@ static int outbound_notify (void *cls, const struct GNUNET_PeerIdentity *other, const struct GNUNET_MessageHeader *message, - struct GNUNET_TIME_Relative latency, - uint32_t distance) + const struct GNUNET_TRANSPORT_ATS_Information *atsi) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Core notifies about outbound data for `%4s'.\n", @@ -153,15 +194,12 @@ outbound_notify (void *cls, } -static GNUNET_SCHEDULER_TaskIdentifier err_task; - static int process_mtype (void *cls, const struct GNUNET_PeerIdentity *peer, const struct GNUNET_MessageHeader *message, - struct GNUNET_TIME_Relative latency, - uint32_t distance) + const struct GNUNET_TRANSPORT_ATS_Information *atsi) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Receiving message from `%4s'.\n", GNUNET_i2s (peer)); @@ -179,27 +217,6 @@ static struct GNUNET_CORE_MessageHandler handlers[] = { }; -static size_t -transmit_ready (void *cls, size_t size, void *buf) -{ - struct PeerContext *p = cls; - struct GNUNET_MessageHeader *m; - - GNUNET_assert (ok == 4); - OKPP; - GNUNET_assert (p == &p1); - GNUNET_assert (buf != NULL); - m = (struct GNUNET_MessageHeader *) buf; - m->type = htons (MTYPE); - m->size = htons (sizeof (struct GNUNET_MessageHeader)); - err_task = - GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 120), &terminate_task_error, NULL); - - return sizeof (struct GNUNET_MessageHeader); -} - - - static void init_notify (void *cls, struct GNUNET_CORE_Handle *server, @@ -219,8 +236,7 @@ init_notify (void *cls, GNUNET_assert (ok == 2); OKPP; /* connect p2 */ - GNUNET_CORE_connect (p2.cfg, - TIMEOUT, + GNUNET_CORE_connect (p2.cfg, 1, &p2, &init_notify, &connect_notify, @@ -236,21 +252,12 @@ init_notify (void *cls, OKPP; GNUNET_assert (cls == &p2); GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Asking core (1) for transmission to peer `%4s'\n", + "Asking core (1) to connect to peer `%4s'\n", GNUNET_i2s (&p2.id)); - - if (NULL == GNUNET_CORE_notify_transmit_ready (p1.ch, - 0, - GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 45), - &p2.id, - sizeof (struct GNUNET_MessageHeader), - &transmit_ready, &p1)) - { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "RECEIVED NULL when asking core (1) for transmission to peer `%4s'\n", - GNUNET_i2s (&p2.id)); - } - + GNUNET_CORE_peer_request_connect (p1.ch, + GNUNET_TIME_UNIT_SECONDS, + &p2.id, + NULL, NULL); } } @@ -269,14 +276,14 @@ process_hello (void *cls, p->hello = GNUNET_malloc (ntohs (message->size)); memcpy (p->hello, message, ntohs (message->size)); if ((p == &p1) && (p2.th != NULL)) - GNUNET_TRANSPORT_offer_hello (p2.th, message); + GNUNET_TRANSPORT_offer_hello (p2.th, message, NULL, NULL); if ((p == &p2) && (p1.th != NULL)) - GNUNET_TRANSPORT_offer_hello (p1.th, message); + GNUNET_TRANSPORT_offer_hello (p1.th, message, NULL, NULL); if ((p == &p1) && (p2.hello != NULL)) - GNUNET_TRANSPORT_offer_hello (p1.th, p2.hello); + GNUNET_TRANSPORT_offer_hello (p1.th, p2.hello, NULL, NULL); if ((p == &p2) && (p1.hello != NULL)) - GNUNET_TRANSPORT_offer_hello (p2.th, p1.hello); + GNUNET_TRANSPORT_offer_hello (p2.th, p1.hello, NULL, NULL); } @@ -310,8 +317,7 @@ run (void *cls, OKPP; setup_peer (&p1, "test_core_api_peer1.conf"); setup_peer (&p2, "test_core_api_peer2.conf"); - GNUNET_CORE_connect (p1.cfg, - TIMEOUT, + GNUNET_CORE_connect (p1.cfg, 1, &p1, &init_notify, &connect_notify, @@ -321,7 +327,6 @@ run (void *cls, GNUNET_YES, &outbound_notify, GNUNET_YES, handlers); } - static void stop_arm (struct PeerContext *p) {