diff options
author | Sree Harsha Totakura <totakura@in.tum.de> | 2012-09-14 20:07:31 +0000 |
---|---|---|
committer | Sree Harsha Totakura <totakura@in.tum.de> | 2012-09-14 20:07:31 +0000 |
commit | 52120245ff42d584ef05df14a911742f8aad2ac4 (patch) | |
tree | 154123c451cf54a908c209332ff3f295ed5be687 /src/testbed | |
parent | acc8df2ae6177e9a29034696a7fc35b06d3a942f (diff) | |
download | gnunet-52120245ff42d584ef05df14a911742f8aad2ac4.tar.gz gnunet-52120245ff42d584ef05df14a911742f8aad2ac4.zip |
handler for overlay request connect
Diffstat (limited to 'src/testbed')
-rw-r--r-- | src/testbed/gnunet-service-testbed.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/testbed/gnunet-service-testbed.c b/src/testbed/gnunet-service-testbed.c index f008405d9..c4ba665e3 100644 --- a/src/testbed/gnunet-service-testbed.c +++ b/src/testbed/gnunet-service-testbed.c | |||
@@ -2352,6 +2352,64 @@ handle_overlay_connect (void *cls, struct GNUNET_SERVER_Client *client, | |||
2352 | 2352 | ||
2353 | 2353 | ||
2354 | /** | 2354 | /** |
2355 | * Handler for GNUNET_MESSAGE_TYPE_TESTBED_REQUESTCONNECT messages | ||
2356 | * | ||
2357 | * @param cls NULL | ||
2358 | * @param client identification of the client | ||
2359 | * @param message the actual message | ||
2360 | */ | ||
2361 | static void | ||
2362 | handle_overlay_request_connect (void *cls, struct GNUNET_SERVER_Client *client, | ||
2363 | const struct GNUNET_MessageHeader *message) | ||
2364 | { | ||
2365 | const struct GNUNET_TESTBED_RequestConnectMessage *msg; | ||
2366 | struct GNUNET_TRANSPORT_Handle *th; | ||
2367 | struct Peer *peer; | ||
2368 | uint32_t peer_id; | ||
2369 | |||
2370 | if (sizeof (struct GNUNET_TESTBED_RequestConnectMessage) >= ntohs | ||
2371 | (message->size)) | ||
2372 | { | ||
2373 | GNUNET_break (0); | ||
2374 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | ||
2375 | return; | ||
2376 | } | ||
2377 | msg = (const struct GNUNET_TESTBED_RequestConnectMessage *) message; | ||
2378 | if ((NULL == msg->hello) || | ||
2379 | (GNUNET_MESSAGE_TYPE_HELLO != ntohs (msg->hello->type))) | ||
2380 | { | ||
2381 | GNUNET_break (0); | ||
2382 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | ||
2383 | return; | ||
2384 | } | ||
2385 | peer_id = ntohl (msg->peer); | ||
2386 | if ((peer_id >= peer_list_size) || (NULL == (peer = peer_list[peer_id]))) | ||
2387 | { | ||
2388 | GNUNET_break (0); | ||
2389 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | ||
2390 | return; | ||
2391 | } | ||
2392 | if (GNUNET_NO != peer->is_remote) | ||
2393 | { | ||
2394 | GNUNET_break (0); | ||
2395 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | ||
2396 | return; | ||
2397 | } | ||
2398 | th = GNUNET_TRANSPORT_connect (peer->details.local.cfg, NULL, NULL, NULL, | ||
2399 | NULL, NULL); | ||
2400 | if (NULL == th) | ||
2401 | { | ||
2402 | GNUNET_break (0); | ||
2403 | GNUNET_SERVER_receive_done (client, GNUNET_SYSERR); | ||
2404 | return; | ||
2405 | } | ||
2406 | GNUNET_TRANSPORT_offer_hello (th, msg->hello, NULL, NULL); | ||
2407 | GNUNET_TRANSPORT_try_connect (th, &msg->peer_identity); | ||
2408 | GNUNET_SERVER_receive_done (client, GNUNET_OK); | ||
2409 | } | ||
2410 | |||
2411 | |||
2412 | /** | ||
2355 | * Iterator over hash map entries. | 2413 | * Iterator over hash map entries. |
2356 | * | 2414 | * |
2357 | * @param cls closure | 2415 | * @param cls closure |
@@ -2507,6 +2565,8 @@ testbed_run (void *cls, struct GNUNET_SERVER_Handle *server, | |||
2507 | sizeof (struct GNUNET_TESTBED_PeerGetConfigurationMessage)}, | 2565 | sizeof (struct GNUNET_TESTBED_PeerGetConfigurationMessage)}, |
2508 | {&handle_overlay_connect, NULL, GNUNET_MESSAGE_TYPE_TESTBED_OLCONNECT, | 2566 | {&handle_overlay_connect, NULL, GNUNET_MESSAGE_TYPE_TESTBED_OLCONNECT, |
2509 | sizeof (struct GNUNET_TESTBED_OverlayConnectMessage)}, | 2567 | sizeof (struct GNUNET_TESTBED_OverlayConnectMessage)}, |
2568 | {&handle_overlay_request_connect, NULL, GNUNET_MESSAGE_TYPE_TESTBED_REQUESTCONNECT, | ||
2569 | sizeof (struct GNUNET_TESTBED_OverlayConnectMessage)}, | ||
2510 | {NULL} | 2570 | {NULL} |
2511 | }; | 2571 | }; |
2512 | 2572 | ||