diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-07-25 00:30:00 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-07-25 00:30:00 +0000 |
commit | d0701eb6315fc3f5aca74415bbf0ff7418409f87 (patch) | |
tree | fcacb97bbcca542ce9493001c825fd265cb8a801 /src/transport/transport_api_core.c | |
parent | 9bfb8bff3fd253407530c76c7590b33bacf033f1 (diff) | |
download | gnunet-d0701eb6315fc3f5aca74415bbf0ff7418409f87.tar.gz gnunet-d0701eb6315fc3f5aca74415bbf0ff7418409f87.zip |
switching transport tests to new MQ-based transport API
Diffstat (limited to 'src/transport/transport_api_core.c')
-rw-r--r-- | src/transport/transport_api_core.c | 57 |
1 files changed, 30 insertions, 27 deletions
diff --git a/src/transport/transport_api_core.c b/src/transport/transport_api_core.c index 499aa96f6..4ca62d797 100644 --- a/src/transport/transport_api_core.c +++ b/src/transport/transport_api_core.c | |||
@@ -266,12 +266,12 @@ neighbour_delete (void *cls, | |||
266 | GNUNET_SCHEDULER_cancel (n->timeout_task); | 266 | GNUNET_SCHEDULER_cancel (n->timeout_task); |
267 | n->timeout_task = NULL; | 267 | n->timeout_task = NULL; |
268 | } | 268 | } |
269 | GNUNET_MQ_destroy (n->mq); | ||
270 | if (NULL != n->env) | 269 | if (NULL != n->env) |
271 | { | 270 | { |
272 | GNUNET_MQ_send_cancel (n->env); | 271 | GNUNET_MQ_send_cancel (n->env); |
273 | n->env = NULL; | 272 | n->env = NULL; |
274 | } | 273 | } |
274 | GNUNET_MQ_destroy (n->mq); | ||
275 | GNUNET_assert (NULL == n->mq); | 275 | GNUNET_assert (NULL == n->mq); |
276 | GNUNET_assert (GNUNET_YES == | 276 | GNUNET_assert (GNUNET_YES == |
277 | GNUNET_CONTAINER_multipeermap_remove (handle->neighbours, | 277 | GNUNET_CONTAINER_multipeermap_remove (handle->neighbours, |
@@ -411,7 +411,7 @@ mq_send_impl (struct GNUNET_MQ_Handle *mq, | |||
411 | GNUNET_MESSAGE_TYPE_TRANSPORT_SEND, | 411 | GNUNET_MESSAGE_TYPE_TRANSPORT_SEND, |
412 | msg); | 412 | msg); |
413 | obm->reserved = htonl (0); | 413 | obm->reserved = htonl (0); |
414 | obm->timeout = GNUNET_TIME_relative_hton (GNUNET_TIME_UNIT_ZERO); /* FIXME: to be removed */ | 414 | obm->timeout = GNUNET_TIME_relative_hton (GNUNET_TIME_UNIT_MINUTES); /* FIXME: to be removed */ |
415 | obm->peer = n->id; | 415 | obm->peer = n->id; |
416 | GNUNET_assert (NULL == n->timeout_task); | 416 | GNUNET_assert (NULL == n->timeout_task); |
417 | n->is_ready = GNUNET_NO; | 417 | n->is_ready = GNUNET_NO; |
@@ -421,6 +421,9 @@ mq_send_impl (struct GNUNET_MQ_Handle *mq, | |||
421 | n); | 421 | n); |
422 | GNUNET_MQ_send (h->mq, | 422 | GNUNET_MQ_send (h->mq, |
423 | n->env); | 423 | n->env); |
424 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
425 | "Queued message for neighbour `%s'.\n", | ||
426 | GNUNET_i2s (&n->id)); | ||
424 | } | 427 | } |
425 | 428 | ||
426 | 429 | ||
@@ -655,15 +658,14 @@ check_recv (void *cls, | |||
655 | const struct GNUNET_MessageHeader *imm; | 658 | const struct GNUNET_MessageHeader *imm; |
656 | uint16_t size; | 659 | uint16_t size; |
657 | 660 | ||
658 | size = ntohs (im->header.size); | 661 | size = ntohs (im->header.size) - sizeof (*im); |
659 | if (size < | 662 | if (size < sizeof (struct GNUNET_MessageHeader)) |
660 | sizeof (struct InboundMessage) + sizeof (struct GNUNET_MessageHeader)) | ||
661 | { | 663 | { |
662 | GNUNET_break (0); | 664 | GNUNET_break (0); |
663 | return GNUNET_SYSERR; | 665 | return GNUNET_SYSERR; |
664 | } | 666 | } |
665 | imm = (const struct GNUNET_MessageHeader *) &im[1]; | 667 | imm = (const struct GNUNET_MessageHeader *) &im[1]; |
666 | if (ntohs (imm->size) + sizeof (struct InboundMessage) != size) | 668 | if (ntohs (imm->size) != size) |
667 | { | 669 | { |
668 | GNUNET_break (0); | 670 | GNUNET_break (0); |
669 | return GNUNET_SYSERR; | 671 | return GNUNET_SYSERR; |
@@ -808,15 +810,15 @@ static void | |||
808 | disconnect_and_schedule_reconnect (struct GNUNET_TRANSPORT_CoreHandle *h) | 810 | disconnect_and_schedule_reconnect (struct GNUNET_TRANSPORT_CoreHandle *h) |
809 | { | 811 | { |
810 | GNUNET_assert (NULL == h->reconnect_task); | 812 | GNUNET_assert (NULL == h->reconnect_task); |
813 | /* Forget about all neighbours that we used to be connected to */ | ||
814 | GNUNET_CONTAINER_multipeermap_iterate (h->neighbours, | ||
815 | &neighbour_delete, | ||
816 | h); | ||
811 | if (NULL != h->mq) | 817 | if (NULL != h->mq) |
812 | { | 818 | { |
813 | GNUNET_MQ_destroy (h->mq); | 819 | GNUNET_MQ_destroy (h->mq); |
814 | h->mq = NULL; | 820 | h->mq = NULL; |
815 | } | 821 | } |
816 | /* Forget about all neighbours that we used to be connected to */ | ||
817 | GNUNET_CONTAINER_multipeermap_iterate (h->neighbours, | ||
818 | &neighbour_delete, | ||
819 | h); | ||
820 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 822 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
821 | "Scheduling task to reconnect to transport service in %s.\n", | 823 | "Scheduling task to reconnect to transport service in %s.\n", |
822 | GNUNET_STRINGS_relative_time_to_string (h->reconnect_delay, | 824 | GNUNET_STRINGS_relative_time_to_string (h->reconnect_delay, |
@@ -865,13 +867,13 @@ GNUNET_TRANSPORT_core_get_mq (struct GNUNET_TRANSPORT_CoreHandle *handle, | |||
865 | * @return NULL on error | 867 | * @return NULL on error |
866 | */ | 868 | */ |
867 | struct GNUNET_TRANSPORT_CoreHandle * | 869 | struct GNUNET_TRANSPORT_CoreHandle * |
868 | GNUNET_TRANSPORT_connecT (const struct GNUNET_CONFIGURATION_Handle *cfg, | 870 | GNUNET_TRANSPORT_core_connect (const struct GNUNET_CONFIGURATION_Handle *cfg, |
869 | const struct GNUNET_PeerIdentity *self, | 871 | const struct GNUNET_PeerIdentity *self, |
870 | const struct GNUNET_MQ_MessageHandler *handlers, | 872 | const struct GNUNET_MQ_MessageHandler *handlers, |
871 | void *cls, | 873 | void *cls, |
872 | GNUNET_TRANSPORT_NotifyConnecT nc, | 874 | GNUNET_TRANSPORT_NotifyConnecT nc, |
873 | GNUNET_TRANSPORT_NotifyDisconnecT nd, | 875 | GNUNET_TRANSPORT_NotifyDisconnecT nd, |
874 | GNUNET_TRANSPORT_NotifyExcessBandwidtH neb) | 876 | GNUNET_TRANSPORT_NotifyExcessBandwidtH neb) |
875 | { | 877 | { |
876 | struct GNUNET_TRANSPORT_CoreHandle *h; | 878 | struct GNUNET_TRANSPORT_CoreHandle *h; |
877 | unsigned int i; | 879 | unsigned int i; |
@@ -888,22 +890,23 @@ GNUNET_TRANSPORT_connecT (const struct GNUNET_CONFIGURATION_Handle *cfg, | |||
888 | h->nd_cb = nd; | 890 | h->nd_cb = nd; |
889 | h->neb_cb = neb; | 891 | h->neb_cb = neb; |
890 | h->reconnect_delay = GNUNET_TIME_UNIT_ZERO; | 892 | h->reconnect_delay = GNUNET_TIME_UNIT_ZERO; |
891 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
892 | "Connecting to transport service.\n"); | ||
893 | reconnect (h); | ||
894 | if (NULL == h->mq) | ||
895 | { | ||
896 | GNUNET_free (h); | ||
897 | return NULL; | ||
898 | } | ||
899 | if (NULL != handlers) | 893 | if (NULL != handlers) |
900 | { | 894 | { |
901 | for (i=0;NULL != handlers[i].cb; i++) ; | 895 | for (i=0;NULL != handlers[i].cb; i++) ; |
902 | h->handlers = GNUNET_new_array (i + 1, | 896 | h->handlers = GNUNET_new_array (i + 1, |
903 | struct GNUNET_MQ_MessageHandler); | 897 | struct GNUNET_MQ_MessageHandler); |
904 | GNUNET_memcpy (h->handlers, | 898 | GNUNET_memcpy (h->handlers, |
905 | handlers, | 899 | handlers, |
906 | i * sizeof (struct GNUNET_MQ_MessageHandler)); | 900 | i * sizeof (struct GNUNET_MQ_MessageHandler)); |
901 | } | ||
902 | LOG (GNUNET_ERROR_TYPE_DEBUG, | ||
903 | "Connecting to transport service\n"); | ||
904 | reconnect (h); | ||
905 | if (NULL == h->mq) | ||
906 | { | ||
907 | GNUNET_free_non_null (h->handlers); | ||
908 | GNUNET_free (h); | ||
909 | return NULL; | ||
907 | } | 910 | } |
908 | h->neighbours = | 911 | h->neighbours = |
909 | GNUNET_CONTAINER_multipeermap_create (STARTING_NEIGHBOURS_SIZE, | 912 | GNUNET_CONTAINER_multipeermap_create (STARTING_NEIGHBOURS_SIZE, |