aboutsummaryrefslogtreecommitdiff
path: root/src/transport/gnunet-service-transport_clients.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/gnunet-service-transport_clients.c')
-rw-r--r--src/transport/gnunet-service-transport_clients.c46
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 */
660static void 660static void
661clients_handle_address_lookup (void *cls, struct GNUNET_SERVER_Client *client, 661clients_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)},