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.c117
1 files changed, 64 insertions, 53 deletions
diff --git a/src/transport/gnunet-service-transport_clients.c b/src/transport/gnunet-service-transport_clients.c
index 310121268..77374ff19 100644
--- a/src/transport/gnunet-service-transport_clients.c
+++ b/src/transport/gnunet-service-transport_clients.c
@@ -790,8 +790,8 @@ clients_handle_send (void *cls,
790 stcc->client = client; 790 stcc->client = client;
791 GNUNET_SERVER_client_keep (client); 791 GNUNET_SERVER_client_keep (client);
792 GST_manipulation_send (&obm->peer, obmm, msize, 792 GST_manipulation_send (&obm->peer, obmm, msize,
793 GNUNET_TIME_relative_ntoh (obm->timeout), 793 GNUNET_TIME_relative_ntoh (obm->timeout),
794 &handle_send_transmit_continuation, stcc); 794 &handle_send_transmit_continuation, stcc);
795} 795}
796 796
797 797
@@ -837,63 +837,71 @@ clients_handle_request_connect (void *cls,
837 struct GNUNET_SERVER_Client *client, 837 struct GNUNET_SERVER_Client *client,
838 const struct GNUNET_MessageHeader *message) 838 const struct GNUNET_MessageHeader *message)
839{ 839{
840 const struct TransportRequestConnectMessage *trcm = 840 const struct TransportRequestConnectMessage *trcm;
841 (const struct TransportRequestConnectMessage *) message; 841
842 842 trcm = (const struct TransportRequestConnectMessage *) message;
843 if (GNUNET_YES == ntohl (trcm->connect)) 843 GNUNET_break (0 == ntohl (trcm->reserved));
844 GNUNET_STATISTICS_update (GST_stats,
845 gettext_noop
846 ("# REQUEST CONNECT messages received"), 1,
847 GNUNET_NO);
848 if (0 == memcmp (&trcm->peer,
849 &GST_my_identity,
850 sizeof (struct GNUNET_PeerIdentity)))
844 { 851 {
845 GNUNET_STATISTICS_update (GST_stats, 852 GNUNET_break (0);
846 gettext_noop 853 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
847 ("# REQUEST CONNECT messages received"), 1, 854 "Received a request connect message myself `%s'\n",
848 GNUNET_NO); 855 GNUNET_i2s (&trcm->peer));
849 856 GNUNET_SERVER_receive_done (client, GNUNET_OK);
850 if (0 == memcmp (&trcm->peer, &GST_my_identity, 857 return;
851 sizeof (struct GNUNET_PeerIdentity)))
852 {
853 GNUNET_break_op (0);
854 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
855 "Received a request connect message myself `%s'\n",
856 GNUNET_i2s (&trcm->peer));
857 }
858 else
859 {
860 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
861 _("Received a request connect message for peer `%s'\n"),
862 GNUNET_i2s (&trcm->peer));
863
864 (void) GST_blacklist_test_allowed (&trcm->peer, NULL, &try_connect_if_allowed,
865 NULL);
866 }
867 } 858 }
868 else if (GNUNET_NO == ntohl (trcm->connect)) 859 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
869 { 860 _("Received a request connect message for peer `%s'\n"),
870 GNUNET_STATISTICS_update (GST_stats, 861 GNUNET_i2s (&trcm->peer));
871 gettext_noop 862 (void) GST_blacklist_test_allowed (&trcm->peer,
872 ("# REQUEST DISCONNECT messages received"), 1, 863 NULL,
873 GNUNET_NO); 864 &try_connect_if_allowed,
865 NULL);
866 GNUNET_SERVER_receive_done (client, GNUNET_OK);
867}
874 868
875 if (0 == memcmp (&trcm->peer, &GST_my_identity, 869
876 sizeof (struct GNUNET_PeerIdentity))) 870/**
877 { 871 * Handle request disconnect message
878 GNUNET_break_op (0); 872 *
879 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 873 * @param cls closure (always NULL)
880 "Received a request disconnect message myself `%s'\n", 874 * @param client identification of the client
881 GNUNET_i2s (&trcm->peer)); 875 * @param message the actual message
882 } 876 */
883 else 877static void
884 { 878clients_handle_request_disconnect (void *cls,
885 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 879 struct GNUNET_SERVER_Client *client,
886 _("Received a request disconnect message for peer `%s'\n"), 880 const struct GNUNET_MessageHeader *message)
887 GNUNET_i2s (&trcm->peer)); 881{
888 (void) GST_neighbours_force_disconnect (&trcm->peer); 882 const struct TransportRequestDisconnectMessage *trdm;
889 } 883
890 } 884 trdm = (const struct TransportRequestDisconnectMessage *) message;
891 else 885 GNUNET_break (0 == ntohl (trdm->reserved));
886 GNUNET_STATISTICS_update (GST_stats,
887 gettext_noop
888 ("# REQUEST DISCONNECT messages received"), 1,
889 GNUNET_NO);
890 if (0 == memcmp (&trdm->peer,
891 &GST_my_identity,
892 sizeof (struct GNUNET_PeerIdentity)))
892 { 893 {
893 GNUNET_break_op (0); 894 GNUNET_break (0);
894 GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); 895 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
896 "Received a request disconnect message myself `%s'\n",
897 GNUNET_i2s (&trdm->peer));
898 GNUNET_SERVER_receive_done (client, GNUNET_OK);
895 return; 899 return;
896 } 900 }
901 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
902 _("Received a request disconnect message for peer `%s'\n"),
903 GNUNET_i2s (&trdm->peer));
904 (void) GST_neighbours_force_disconnect (&trdm->peer);
897 GNUNET_SERVER_receive_done (client, GNUNET_OK); 905 GNUNET_SERVER_receive_done (client, GNUNET_OK);
898} 906}
899 907
@@ -1515,6 +1523,9 @@ GST_clients_start (struct GNUNET_SERVER_Handle *server)
1515 {&clients_handle_request_connect, NULL, 1523 {&clients_handle_request_connect, NULL,
1516 GNUNET_MESSAGE_TYPE_TRANSPORT_REQUEST_CONNECT, 1524 GNUNET_MESSAGE_TYPE_TRANSPORT_REQUEST_CONNECT,
1517 sizeof (struct TransportRequestConnectMessage)}, 1525 sizeof (struct TransportRequestConnectMessage)},
1526 {&clients_handle_request_disconnect, NULL,
1527 GNUNET_MESSAGE_TYPE_TRANSPORT_REQUEST_DISCONNECT,
1528 sizeof (struct TransportRequestDisconnectMessage)},
1518 {&clients_handle_address_to_string, NULL, 1529 {&clients_handle_address_to_string, NULL,
1519 GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING, 0}, 1530 GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_TO_STRING, 0},
1520 {&clients_handle_monitor_peers, NULL, 1531 {&clients_handle_monitor_peers, NULL,