aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-08-14 15:18:52 +0000
committerChristian Grothoff <christian@grothoff.org>2011-08-14 15:18:52 +0000
commitafb010fb5c1864267f446f1097dc045b0001dba5 (patch)
tree68cdce95c338f45eb7093f2c8e056fe1db5eecb6
parentdd0cb0a52289df80d378f2c518e5036c64aef7a0 (diff)
downloadgnunet-afb010fb5c1864267f446f1097dc045b0001dba5.tar.gz
gnunet-afb010fb5c1864267f446f1097dc045b0001dba5.zip
handle connect request, add message types
-rw-r--r--src/transport/gnunet-service-transport_clients.c80
1 files changed, 71 insertions, 9 deletions
diff --git a/src/transport/gnunet-service-transport_clients.c b/src/transport/gnunet-service-transport_clients.c
index e73826daf..0e701ea02 100644
--- a/src/transport/gnunet-service-transport_clients.c
+++ b/src/transport/gnunet-service-transport_clients.c
@@ -533,6 +533,57 @@ clients_handle_send (void *cls,
533 stcc); 533 stcc);
534} 534}
535 535
536
537
538/**
539 * Try to initiate a connection to the given peer if the blacklist
540 * allowed it.
541 *
542 * @param cls closure (unused, NULL)
543 * @param peer identity of peer that was tested
544 * @param result GNUNET_OK if the connection is allowed,
545 * GNUNET_NO if not
546 */
547static void
548try_connect_if_allowed (void *cls,
549 const struct GNUNET_PeerIdentity *peer,
550 int result)
551{
552 if (GNUNET_OK != result)
553 return; /* not allowed */
554 GST_neighbours_try_connect (peer);
555}
556
557
558/**
559 * Handle request connect message
560 *
561 * @param cls closure (always NULL)
562 * @param client identification of the client
563 * @param message the actual message
564 */
565static void
566clients_handle_request_connect (void *cls,
567 struct GNUNET_SERVER_Client *client,
568 const struct GNUNET_MessageHeader *message)
569{
570 const struct TransportRequestConnectMessage *trcm =
571 (const struct TransportRequestConnectMessage *) message;
572
573 GNUNET_STATISTICS_update (GST_stats,
574 gettext_noop ("# REQUEST CONNECT messages received"),
575 1,
576 GNUNET_NO);
577#if DEBUG_TRANSPORT
578 GNUNET_log(GNUNET_ERROR_TYPE_DEBUG,
579 "Received a request connect message for peer `%s'\n",
580 GNUNET_i2s(&trcm->peer));
581#endif
582 (void) GST_blacklist_test_allowed (&trcm->peer, NULL,
583 &try_connect_if_allowed, NULL);
584 GNUNET_SERVER_receive_done (client, GNUNET_OK);
585}
586
536 587
537/** 588/**
538 * Client asked for a quota change for a particular peer. Process the request. 589 * Client asked for a quota change for a particular peer. Process the request.
@@ -795,15 +846,26 @@ void
795GST_clients_start (struct GNUNET_SERVER_Handle *server) 846GST_clients_start (struct GNUNET_SERVER_Handle *server)
796{ 847{
797 static const struct GNUNET_SERVER_MessageHandler handlers[] = { 848 static const struct GNUNET_SERVER_MessageHandler handlers[] = {
798 { &clients_handle_start, NULL, sizeof (struct StartMessage)}, 849 { &clients_handle_start, NULL,
799 { &clients_handle_hello, NULL, 0}, 850 GNUNET_MESSAGE_TYPE_TRANSPORT_START, sizeof (struct StartMessage)},
800 { &clients_handle_send, NULL, 0}, 851 { &clients_handle_hello, NULL,
801 { &clients_handle_set_quota, NULL, sizeof (struct QuotaSetMessage)}, 852 GNUNET_MESSAGE_TYPE_HELLO, 0},
802 { &clients_handle_address_lookup, NULL, 0}, 853 { &clients_handle_send, NULL,
803 { &clients_handle_peer_address_lookup, NULL, sizeof (struct PeerAddressLookupMessage)}, 854 GNUNET_MESSAGE_TYPE_TRANSPORT_SEND , 0},
804 { &clients_handle_address_iterate, NULL, sizeof (struct GNUNET_MessageHeader)}, 855 { &clients_handle_request_connect, NULL,
805 { &GST_blacklist_handle_init, NULL, sizeof (struct GNUNET_MessageHeader)}, 856 GNUNET_MESSAGE_TYPE_TRANSPORT_REQUEST_CONNECT, sizeof (struct TransportRequestConnectMessage)},
806 { &GST_blacklist_handle_reply, NULL, sizeof (struct BlacklistMessage)}, 857 { &clients_handle_set_quota, NULL,
858 GNUNET_MESSAGE_TYPE_TRANSPORT_SET_QUOTA, sizeof (struct QuotaSetMessage)},
859 { &clients_handle_address_lookup, NULL,
860 GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_LOOKUP , 0},
861 { &clients_handle_peer_address_lookup, NULL,
862 GNUNET_MESSAGE_TYPE_TRANSPORT_PEER_ADDRESS_LOOKUP, sizeof (struct PeerAddressLookupMessage)},
863 { &clients_handle_address_iterate, NULL,
864 GNUNET_MESSAGE_TYPE_TRANSPORT_ADDRESS_ITERATE, sizeof (struct GNUNET_MessageHeader)},
865 { &GST_blacklist_handle_init, NULL,
866 GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_INIT, sizeof (struct GNUNET_MessageHeader)},
867 { &GST_blacklist_handle_reply, NULL,
868 GNUNET_MESSAGE_TYPE_TRANSPORT_BLACKLIST_REPLY, sizeof (struct BlacklistMessage)},
807 {NULL, NULL, 0, 0} 869 {NULL, NULL, 0, 0}
808 }; 870 };
809 GNUNET_SERVER_add_handlers (server, handlers); 871 GNUNET_SERVER_add_handlers (server, handlers);