aboutsummaryrefslogtreecommitdiff
path: root/src/core/gnunet-service-core.c
diff options
context:
space:
mode:
authorNathan S. Evans <evans@in.tum.de>2011-02-22 15:19:49 +0000
committerNathan S. Evans <evans@in.tum.de>2011-02-22 15:19:49 +0000
commit7c0698d2296e00d9544f48819f24ed4319e3fad8 (patch)
tree343507da792d950d8d24ed11648e433bcad304a9 /src/core/gnunet-service-core.c
parentac5cf07b590f788946d4b05f8e11b2414493f4eb (diff)
downloadgnunet-7c0698d2296e00d9544f48819f24ed4319e3fad8.tar.gz
gnunet-7c0698d2296e00d9544f48819f24ed4319e3fad8.zip
Testing and core related changes.
Diffstat (limited to 'src/core/gnunet-service-core.c')
-rw-r--r--src/core/gnunet-service-core.c47
1 files changed, 37 insertions, 10 deletions
diff --git a/src/core/gnunet-service-core.c b/src/core/gnunet-service-core.c
index 44052709b..6be71242f 100644
--- a/src/core/gnunet-service-core.c
+++ b/src/core/gnunet-service-core.c
@@ -1498,7 +1498,6 @@ handle_client_iterate_peers (void *cls,
1498{ 1498{
1499 struct GNUNET_MessageHeader done_msg; 1499 struct GNUNET_MessageHeader done_msg;
1500 struct GNUNET_SERVER_TransmitContext *tc; 1500 struct GNUNET_SERVER_TransmitContext *tc;
1501 struct GNUNET_PeerIdentity *peer;
1502 int msize; 1501 int msize;
1503 /* notify new client about existing neighbours */ 1502 /* notify new client about existing neighbours */
1504 1503
@@ -1506,11 +1505,6 @@ handle_client_iterate_peers (void *cls,
1506 tc = GNUNET_SERVER_transmit_context_create (client); 1505 tc = GNUNET_SERVER_transmit_context_create (client);
1507 if (msize == sizeof(struct GNUNET_MessageHeader)) 1506 if (msize == sizeof(struct GNUNET_MessageHeader))
1508 GNUNET_CONTAINER_multihashmap_iterate (neighbours, &queue_connect_message, tc); 1507 GNUNET_CONTAINER_multihashmap_iterate (neighbours, &queue_connect_message, tc);
1509 else if (msize == sizeof(struct GNUNET_MessageHeader) + sizeof(struct GNUNET_PeerIdentity))
1510 {
1511 peer = (struct GNUNET_PeerIdentity *)&message[1];
1512 GNUNET_CONTAINER_multihashmap_get_multiple(neighbours, &peer->hashPubKey, &queue_connect_message, tc);
1513 }
1514 else 1508 else
1515 GNUNET_break(0); 1509 GNUNET_break(0);
1516 1510
@@ -1521,6 +1515,38 @@ handle_client_iterate_peers (void *cls,
1521 GNUNET_TIME_UNIT_FOREVER_REL); 1515 GNUNET_TIME_UNIT_FOREVER_REL);
1522} 1516}
1523 1517
1518/**
1519 * Handle CORE_ITERATE_PEERS request.
1520 *
1521 * @param cls unused
1522 * @param client client sending the iteration request
1523 * @param message iteration request message
1524 */
1525static void
1526handle_client_have_peer (void *cls,
1527 struct GNUNET_SERVER_Client *client,
1528 const struct GNUNET_MessageHeader *message)
1529
1530{
1531 struct GNUNET_MessageHeader done_msg;
1532 struct GNUNET_SERVER_TransmitContext *tc;
1533 struct GNUNET_PeerIdentity *peer;
1534 int msize;
1535 /* notify new client about existing neighbours */
1536
1537 msize = ntohs(message->size);
1538 tc = GNUNET_SERVER_transmit_context_create (client);
1539
1540 peer = (struct GNUNET_PeerIdentity *)&message[1];
1541 GNUNET_CONTAINER_multihashmap_get_multiple(neighbours, &peer->hashPubKey, &queue_connect_message, tc);
1542
1543 done_msg.size = htons (sizeof (struct GNUNET_MessageHeader));
1544 done_msg.type = htons (GNUNET_MESSAGE_TYPE_CORE_ITERATE_PEERS_END);
1545 GNUNET_SERVER_transmit_context_append_message (tc, &done_msg);
1546 GNUNET_SERVER_transmit_context_run (tc,
1547 GNUNET_TIME_UNIT_FOREVER_REL);
1548}
1549
1524 1550
1525/** 1551/**
1526 * Handle REQUEST_INFO request. 1552 * Handle REQUEST_INFO request.
@@ -2973,10 +2999,6 @@ handle_client_request_connect (void *cls,
2973 if ( (GNUNET_YES == n->is_connected) || 2999 if ( (GNUNET_YES == n->is_connected) ||
2974 (n->th != NULL) ) 3000 (n->th != NULL) )
2975 { 3001 {
2976 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
2977 "Core received `%s' request for `%4s', already connected!\n",
2978 "REQUEST_CONNECT",
2979 GNUNET_i2s (&cm->peer));
2980 if (GNUNET_YES == n->is_connected) 3002 if (GNUNET_YES == n->is_connected)
2981 GNUNET_STATISTICS_update (stats, 3003 GNUNET_STATISTICS_update (stats,
2982 gettext_noop ("# connection requests ignored (already connected)"), 3004 gettext_noop ("# connection requests ignored (already connected)"),
@@ -3004,10 +3026,12 @@ handle_client_request_connect (void *cls,
3004 1, 3026 1,
3005 GNUNET_NO); 3027 GNUNET_NO);
3006 3028
3029#if DEBUG_CORE
3007 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, 3030 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
3008 "Core received `%s' request for `%4s', will try to establish connection\n", 3031 "Core received `%s' request for `%4s', will try to establish connection\n",
3009 "REQUEST_CONNECT", 3032 "REQUEST_CONNECT",
3010 GNUNET_i2s (&cm->peer)); 3033 GNUNET_i2s (&cm->peer));
3034#endif
3011 3035
3012 /* ask transport to connect to the peer */ 3036 /* ask transport to connect to the peer */
3013 n->th = GNUNET_TRANSPORT_notify_transmit_ready (transport, 3037 n->th = GNUNET_TRANSPORT_notify_transmit_ready (transport,
@@ -4662,6 +4686,9 @@ run (void *cls,
4662 {&handle_client_iterate_peers, NULL, 4686 {&handle_client_iterate_peers, NULL,
4663 GNUNET_MESSAGE_TYPE_CORE_ITERATE_PEERS, 4687 GNUNET_MESSAGE_TYPE_CORE_ITERATE_PEERS,
4664 sizeof (struct GNUNET_MessageHeader)}, 4688 sizeof (struct GNUNET_MessageHeader)},
4689 {&handle_client_have_peer, NULL,
4690 GNUNET_MESSAGE_TYPE_CORE_PEER_CONNECTED,
4691 sizeof (struct GNUNET_MessageHeader) + sizeof(struct GNUNET_PeerIdentity)},
4665 {&handle_client_request_info, NULL, 4692 {&handle_client_request_info, NULL,
4666 GNUNET_MESSAGE_TYPE_CORE_REQUEST_INFO, 4693 GNUNET_MESSAGE_TYPE_CORE_REQUEST_INFO,
4667 sizeof (struct RequestInfoMessage)}, 4694 sizeof (struct RequestInfoMessage)},