diff options
Diffstat (limited to 'src/transport/gnunet-service-transport_clients.c')
-rw-r--r-- | src/transport/gnunet-service-transport_clients.c | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/src/transport/gnunet-service-transport_clients.c b/src/transport/gnunet-service-transport_clients.c index d60514565..7c50218e0 100644 --- a/src/transport/gnunet-service-transport_clients.c +++ b/src/transport/gnunet-service-transport_clients.c | |||
@@ -616,12 +616,12 @@ transmit_address_to_client (void *cls, const char *buf) | |||
616 | if (NULL == buf) | 616 | if (NULL == buf) |
617 | { | 617 | { |
618 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, | 618 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, |
619 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_REPLY); | 619 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING_REPLY); |
620 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); | 620 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); |
621 | return; | 621 | return; |
622 | } | 622 | } |
623 | GNUNET_SERVER_transmit_context_append_data (tc, buf, strlen (buf) + 1, | 623 | GNUNET_SERVER_transmit_context_append_data (tc, buf, strlen (buf) + 1, |
624 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_REPLY); | 624 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING_REPLY); |
625 | } | 625 | } |
626 | 626 | ||
627 | 627 | ||
@@ -641,12 +641,12 @@ transmit_binary_to_client (void *cls, void *buf, size_t size) | |||
641 | if (NULL == buf) | 641 | if (NULL == buf) |
642 | { | 642 | { |
643 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, | 643 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, |
644 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_REPLY); | 644 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE); |
645 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); | 645 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); |
646 | return; | 646 | return; |
647 | } | 647 | } |
648 | GNUNET_SERVER_transmit_context_append_data (tc, buf, size, | 648 | GNUNET_SERVER_transmit_context_append_data (tc, buf, size, |
649 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_REPLY); | 649 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE); |
650 | } | 650 | } |
651 | 651 | ||
652 | 652 | ||
@@ -658,7 +658,7 @@ transmit_binary_to_client (void *cls, void *buf, size_t size) | |||
658 | * @param message the resolution request | 658 | * @param message the resolution request |
659 | */ | 659 | */ |
660 | static void | 660 | static void |
661 | clients_handle_address_lookup (void *cls, struct GNUNET_SERVER_Client *client, | 661 | clients_handle_address_to_string (void *cls, struct GNUNET_SERVER_Client *client, |
662 | const struct GNUNET_MessageHeader *message) | 662 | const struct GNUNET_MessageHeader *message) |
663 | { | 663 | { |
664 | const struct AddressLookupMessage *alum; | 664 | const struct AddressLookupMessage *alum; |
@@ -702,7 +702,7 @@ clients_handle_address_lookup (void *cls, struct GNUNET_SERVER_Client *client, | |||
702 | if (NULL == papi) | 702 | if (NULL == papi) |
703 | { | 703 | { |
704 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, | 704 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, |
705 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_REPLY); | 705 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING_REPLY); |
706 | GNUNET_SERVER_transmit_context_run (tc, rtimeout); | 706 | GNUNET_SERVER_transmit_context_run (tc, rtimeout); |
707 | return; | 707 | return; |
708 | } | 708 | } |
@@ -771,7 +771,7 @@ clients_handle_peer_address_lookup (void *cls, | |||
771 | GST_validation_get_addresses (&peer_address_lookup->peer, | 771 | GST_validation_get_addresses (&peer_address_lookup->peer, |
772 | &send_address_to_client, tc); | 772 | &send_address_to_client, tc); |
773 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, | 773 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, |
774 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_REPLY); | 774 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE); |
775 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); | 775 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); |
776 | } | 776 | } |
777 | 777 | ||
@@ -793,17 +793,26 @@ output_addresses (void *cls, const struct GNUNET_PeerIdentity *peer, | |||
793 | struct GNUNET_SERVER_TransmitContext *tc = cls; | 793 | struct GNUNET_SERVER_TransmitContext *tc = cls; |
794 | struct AddressIterateResponseMessage *msg; | 794 | struct AddressIterateResponseMessage *msg; |
795 | size_t size; | 795 | size_t size; |
796 | size_t slen; | 796 | size_t tlen; |
797 | size_t alen; | ||
798 | char * addr; | ||
797 | 799 | ||
798 | slen = strlen (address->transport_name) + 1; | 800 | tlen = strlen (address->transport_name) + 1; |
799 | size = (sizeof (struct AddressIterateResponseMessage) + slen); | 801 | alen = address->address_length; |
802 | |||
803 | size = (sizeof (struct AddressIterateResponseMessage) + alen + tlen); | ||
800 | msg = GNUNET_malloc (size); | 804 | msg = GNUNET_malloc (size); |
801 | memcpy (&msg->peer, peer, sizeof (struct GNUNET_PeerIdentity)); | 805 | msg->addrlen = htonl (alen); |
802 | memcpy (&msg[0], address->transport_name, slen); | 806 | msg->pluginlen = htonl (tlen); |
803 | msg->addrlen = ntohs (address->address_length); | 807 | msg->peer = *peer; |
804 | msg->pluginlen = ntohs (slen); | 808 | |
805 | // FIXME: what about 'address->address'!? | 809 | addr = (char *) &msg[1]; |
810 | memcpy(addr,address->address, alen); | ||
811 | memcpy(&addr[alen], address->transport_name, tlen); | ||
812 | |||
806 | transmit_binary_to_client (tc, msg, size); | 813 | transmit_binary_to_client (tc, msg, size); |
814 | |||
815 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "output_addresses: peer `%s' transport %s address %s %s\n",GNUNET_i2s(&msg->peer), &addr[alen], GNUNET_a2s((struct sockaddr *) addr, alen), GNUNET_a2s((struct sockaddr *) address->address, address->address_length)); | ||
807 | GNUNET_free (msg); | 816 | GNUNET_free (msg); |
808 | } | 817 | } |
809 | 818 | ||
@@ -824,9 +833,10 @@ clients_handle_address_iterate (void *cls, struct GNUNET_SERVER_Client *client, | |||
824 | 833 | ||
825 | GNUNET_SERVER_disable_receive_done_warning (client); | 834 | GNUNET_SERVER_disable_receive_done_warning (client); |
826 | tc = GNUNET_SERVER_transmit_context_create (client); | 835 | tc = GNUNET_SERVER_transmit_context_create (client); |
836 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "clients_handle_address_iterate: \n"); | ||
827 | GST_neighbours_iterate (&output_addresses, tc); | 837 | GST_neighbours_iterate (&output_addresses, tc); |
828 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, | 838 | GNUNET_SERVER_transmit_context_append_data (tc, NULL, 0, |
829 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_REPLY); | 839 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE_RESPONSE); |
830 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); | 840 | GNUNET_SERVER_transmit_context_run (tc, GNUNET_TIME_UNIT_FOREVER_REL); |
831 | } | 841 | } |
832 | 842 | ||
@@ -849,8 +859,8 @@ GST_clients_start (struct GNUNET_SERVER_Handle *server) | |||
849 | {&clients_handle_request_connect, NULL, | 859 | {&clients_handle_request_connect, NULL, |
850 | GNUNET_MESSAGE_TYPE_TRANSPORT_REQUEST_CONNECT, | 860 | GNUNET_MESSAGE_TYPE_TRANSPORT_REQUEST_CONNECT, |
851 | sizeof (struct TransportRequestConnectMessage)}, | 861 | sizeof (struct TransportRequestConnectMessage)}, |
852 | {&clients_handle_address_lookup, NULL, | 862 | {&clients_handle_address_to_string, NULL, |
853 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_LOOKUP, 0}, | 863 | GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING, 0}, |
854 | {&clients_handle_peer_address_lookup, NULL, | 864 | {&clients_handle_peer_address_lookup, NULL, |
855 | GNUNET_MESSAGE_TYPE_TRANSPORT_PEER_ADDRESS_LOOKUP, | 865 | GNUNET_MESSAGE_TYPE_TRANSPORT_PEER_ADDRESS_LOOKUP, |
856 | sizeof (struct PeerAddressLookupMessage)}, | 866 | sizeof (struct PeerAddressLookupMessage)}, |