diff options
author | Christian Grothoff <christian@grothoff.org> | 2014-12-20 14:54:49 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2014-12-20 14:54:49 +0000 |
commit | 4c630a158187a48ba585167b0ede49bd524d6f8d (patch) | |
tree | ce1c39ef45e87f31ebb56d38c7d0e9038811e85b /src/transport/gnunet-service-transport_clients.c | |
parent | f71fb2816cee37e823abcaa9d79c149ba90ff4cd (diff) | |
download | gnunet-4c630a158187a48ba585167b0ede49bd524d6f8d.tar.gz gnunet-4c630a158187a48ba585167b0ede49bd524d6f8d.zip |
-use separate message types for TRY_CONNECT and TRY_DISCONNECT
Diffstat (limited to 'src/transport/gnunet-service-transport_clients.c')
-rw-r--r-- | src/transport/gnunet-service-transport_clients.c | 117 |
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 | 877 | static void |
884 | { | 878 | clients_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, |