[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r23827 - gnunet/src/testbed
From: |
gnunet |
Subject: |
[GNUnet-SVN] r23827 - gnunet/src/testbed |
Date: |
Fri, 14 Sep 2012 22:07:31 +0200 |
Author: harsha
Date: 2012-09-14 22:07:31 +0200 (Fri, 14 Sep 2012)
New Revision: 23827
Modified:
gnunet/src/testbed/gnunet-service-testbed.c
Log:
handler for overlay request connect
Modified: gnunet/src/testbed/gnunet-service-testbed.c
===================================================================
--- gnunet/src/testbed/gnunet-service-testbed.c 2012-09-14 17:06:35 UTC (rev
23826)
+++ gnunet/src/testbed/gnunet-service-testbed.c 2012-09-14 20:07:31 UTC (rev
23827)
@@ -2352,6 +2352,64 @@
/**
+ * Handler for GNUNET_MESSAGE_TYPE_TESTBED_REQUESTCONNECT messages
+ *
+ * @param cls NULL
+ * @param client identification of the client
+ * @param message the actual message
+ */
+static void
+handle_overlay_request_connect (void *cls, struct GNUNET_SERVER_Client *client,
+ const struct GNUNET_MessageHeader *message)
+{
+ const struct GNUNET_TESTBED_RequestConnectMessage *msg;
+ struct GNUNET_TRANSPORT_Handle *th;
+ struct Peer *peer;
+ uint32_t peer_id;
+
+ if (sizeof (struct GNUNET_TESTBED_RequestConnectMessage) >= ntohs
+ (message->size))
+ {
+ GNUNET_break (0);
+ GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ return;
+ }
+ msg = (const struct GNUNET_TESTBED_RequestConnectMessage *) message;
+ if ((NULL == msg->hello) ||
+ (GNUNET_MESSAGE_TYPE_HELLO != ntohs (msg->hello->type)))
+ {
+ GNUNET_break (0);
+ GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ return;
+ }
+ peer_id = ntohl (msg->peer);
+ if ((peer_id >= peer_list_size) || (NULL == (peer = peer_list[peer_id])))
+ {
+ GNUNET_break (0);
+ GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ return;
+ }
+ if (GNUNET_NO != peer->is_remote)
+ {
+ GNUNET_break (0);
+ GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ return;
+ }
+ th = GNUNET_TRANSPORT_connect (peer->details.local.cfg, NULL, NULL, NULL,
+ NULL, NULL);
+ if (NULL == th)
+ {
+ GNUNET_break (0);
+ GNUNET_SERVER_receive_done (client, GNUNET_SYSERR);
+ return;
+ }
+ GNUNET_TRANSPORT_offer_hello (th, msg->hello, NULL, NULL);
+ GNUNET_TRANSPORT_try_connect (th, &msg->peer_identity);
+ GNUNET_SERVER_receive_done (client, GNUNET_OK);
+}
+
+
+/**
* Iterator over hash map entries.
*
* @param cls closure
@@ -2507,6 +2565,8 @@
sizeof (struct GNUNET_TESTBED_PeerGetConfigurationMessage)},
{&handle_overlay_connect, NULL, GNUNET_MESSAGE_TYPE_TESTBED_OLCONNECT,
sizeof (struct GNUNET_TESTBED_OverlayConnectMessage)},
+ {&handle_overlay_request_connect, NULL,
GNUNET_MESSAGE_TYPE_TESTBED_REQUESTCONNECT,
+ sizeof (struct GNUNET_TESTBED_OverlayConnectMessage)},
{NULL}
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r23827 - gnunet/src/testbed,
gnunet <=