diff options
Diffstat (limited to 'src/transport/gnunet-service-transport_clients.c')
-rw-r--r-- | src/transport/gnunet-service-transport_clients.c | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/src/transport/gnunet-service-transport_clients.c b/src/transport/gnunet-service-transport_clients.c index 2aea7aa7e..da6201d97 100644 --- a/src/transport/gnunet-service-transport_clients.c +++ b/src/transport/gnunet-service-transport_clients.c | |||
@@ -331,8 +331,8 @@ static void | |||
331 | notify_client_about_neighbour (void *cls, | 331 | notify_client_about_neighbour (void *cls, |
332 | const struct GNUNET_PeerIdentity *peer, | 332 | const struct GNUNET_PeerIdentity *peer, |
333 | const struct GNUNET_ATS_Information *ats, | 333 | const struct GNUNET_ATS_Information *ats, |
334 | uint32_t ats_count, | 334 | uint32_t ats_count, |
335 | const struct GNUNET_HELLO_Address *address) | 335 | const struct GNUNET_HELLO_Address *address) |
336 | { | 336 | { |
337 | struct TransportClient *tc = cls; | 337 | struct TransportClient *tc = cls; |
338 | struct ConnectInfoMessage *cim; | 338 | struct ConnectInfoMessage *cim; |
@@ -633,8 +633,9 @@ transmit_address_to_client (void *cls, const char *buf) | |||
633 | * @param message the resolution request | 633 | * @param message the resolution request |
634 | */ | 634 | */ |
635 | static void | 635 | static void |
636 | clients_handle_address_to_string (void *cls, struct GNUNET_SERVER_Client *client, | 636 | clients_handle_address_to_string (void *cls, |
637 | const struct GNUNET_MessageHeader *message) | 637 | struct GNUNET_SERVER_Client *client, |
638 | const struct GNUNET_MessageHeader *message) | ||
638 | { | 639 | { |
639 | const struct AddressLookupMessage *alum; | 640 | const struct AddressLookupMessage *alum; |
640 | struct GNUNET_TRANSPORT_PluginFunctions *papi; | 641 | struct GNUNET_TRANSPORT_PluginFunctions *papi; |
@@ -699,34 +700,38 @@ clients_handle_address_to_string (void *cls, struct GNUNET_SERVER_Client *client | |||
699 | */ | 700 | */ |
700 | static void | 701 | static void |
701 | output_address (void *cls, const struct GNUNET_PeerIdentity *peer, | 702 | output_address (void *cls, const struct GNUNET_PeerIdentity *peer, |
702 | const struct GNUNET_ATS_Information *ats, uint32_t ats_count, | 703 | const struct GNUNET_ATS_Information *ats, uint32_t ats_count, |
703 | const struct GNUNET_HELLO_Address *address) | 704 | const struct GNUNET_HELLO_Address *address) |
704 | { | 705 | { |
705 | struct GNUNET_SERVER_TransmitContext *tc = cls; | 706 | struct GNUNET_SERVER_TransmitContext *tc = cls; |
706 | struct AddressIterateResponseMessage *msg; | 707 | struct AddressIterateResponseMessage *msg; |
707 | size_t size; | 708 | size_t size; |
708 | size_t tlen; | 709 | size_t tlen; |
709 | size_t alen; | 710 | size_t alen; |
710 | char * addr; | 711 | char *addr; |
711 | 712 | ||
712 | tlen = strlen (address->transport_name) + 1; | 713 | tlen = strlen (address->transport_name) + 1; |
713 | alen = address->address_length; | 714 | alen = address->address_length; |
714 | size = (sizeof (struct AddressIterateResponseMessage) + alen + tlen); | 715 | size = (sizeof (struct AddressIterateResponseMessage) + alen + tlen); |
715 | { | 716 | { |
716 | char buf[size]; | 717 | char buf[size]; |
717 | 718 | ||
718 | msg = (struct AddressIterateResponseMessage*) buf; | 719 | msg = (struct AddressIterateResponseMessage *) buf; |
719 | msg->reserved = htonl (0); | 720 | msg->reserved = htonl (0); |
720 | msg->peer = *peer; | 721 | msg->peer = *peer; |
721 | msg->addrlen = htonl (alen); | 722 | msg->addrlen = htonl (alen); |
722 | msg->pluginlen = htonl (tlen); | 723 | msg->pluginlen = htonl (tlen); |
723 | addr = (char *) &msg[1]; | 724 | addr = (char *) &msg[1]; |
724 | memcpy (addr,address->address, alen); | 725 | memcpy (addr, address->address, alen); |
725 | memcpy (&addr[alen], address->transport_name, tlen); | 726 | memcpy (&addr[alen], address->transport_name, tlen); |
726 | GNUNET_SERVER_transmit_context_append_data (tc, | 727 | GNUNET_SERVER_transmit_context_append_data (tc, |
727 | &buf[sizeof(struct GNUNET_MessageHeader)], | 728 | &buf[sizeof |
728 | size - sizeof (struct GNUNET_MessageHeader), | 729 | (struct |
729 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE); | 730 | GNUNET_MessageHeader)], |
731 | size - | ||
732 | sizeof (struct | ||
733 | GNUNET_MessageHeader), | ||
734 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE); | ||
730 | } | 735 | } |
731 | } | 736 | } |
732 | 737 | ||
@@ -746,7 +751,7 @@ clients_handle_address_iterate (void *cls, struct GNUNET_SERVER_Client *client, | |||
746 | { | 751 | { |
747 | static struct GNUNET_PeerIdentity all_zeros; | 752 | static struct GNUNET_PeerIdentity all_zeros; |
748 | struct GNUNET_SERVER_TransmitContext *tc; | 753 | struct GNUNET_SERVER_TransmitContext *tc; |
749 | struct AddressIterateMessage * msg; | 754 | struct AddressIterateMessage *msg; |
750 | struct GNUNET_HELLO_Address *address; | 755 | struct GNUNET_HELLO_Address *address; |
751 | 756 | ||
752 | if (ntohs (message->type) != GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE) | 757 | if (ntohs (message->type) != GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE) |
@@ -765,7 +770,7 @@ clients_handle_address_iterate (void *cls, struct GNUNET_SERVER_Client *client, | |||
765 | if (GNUNET_YES != ntohl (msg->one_shot)) | 770 | if (GNUNET_YES != ntohl (msg->one_shot)) |
766 | { | 771 | { |
767 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 772 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
768 | "Address monitoring not implemented\n"); | 773 | "Address monitoring not implemented\n"); |
769 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | 774 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); |
770 | return; | 775 | return; |
771 | } | 776 | } |
@@ -779,12 +784,12 @@ clients_handle_address_iterate (void *cls, struct GNUNET_SERVER_Client *client, | |||
779 | else | 784 | else |
780 | { | 785 | { |
781 | /* just return one neighbour */ | 786 | /* just return one neighbour */ |
782 | address = GST_neighbour_get_current_address(&msg->peer); | 787 | address = GST_neighbour_get_current_address (&msg->peer); |
783 | if (address != NULL) | 788 | if (address != NULL) |
784 | output_address (tc, &msg->peer, NULL, 0, address); | 789 | output_address (tc, &msg->peer, NULL, 0, address); |
785 | } | 790 | } |
786 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, | 791 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, |
787 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE); | 792 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE); |
788 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); | 793 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); |
789 | } | 794 | } |
790 | 795 | ||
@@ -809,7 +814,7 @@ GST_clients_start (struct GNUNET_SERVER_Handle *server) | |||
809 | sizeof (struct TransportRequestConnectMessage)}, | 814 | sizeof (struct TransportRequestConnectMessage)}, |
810 | {&clients_handle_address_to_string, NULL, | 815 | {&clients_handle_address_to_string, NULL, |
811 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING, 0}, | 816 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING, 0}, |
812 | {&clients_handle_address_iterate, NULL, | 817 | {&clients_handle_address_iterate, NULL, |
813 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE, | 818 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE, |
814 | sizeof (struct AddressIterateMessage)}, | 819 | sizeof (struct AddressIterateMessage)}, |
815 | {&GST_blacklist_handle_init, NULL, | 820 | {&GST_blacklist_handle_init, NULL, |