aboutsummaryrefslogtreecommitdiff
path: root/src/dht
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-01-18 21:55:13 +0100
committerChristian Grothoff <christian@grothoff.org>2022-02-19 12:41:01 +0100
commit5e041b56a98c49a944804420ad53e18707c9f823 (patch)
treede2bf458bb44c86bff53f0a5a73d7f1d4fdef0c2 /src/dht
parent0bd15d392c8c1c4dab56c794ec88fdbd7245cc51 (diff)
downloadgnunet-5e041b56a98c49a944804420ad53e18707c9f823.tar.gz
gnunet-5e041b56a98c49a944804420ad53e18707c9f823.zip
-got basics to work with dhtu and udp+ip underlay
Diffstat (limited to 'src/dht')
-rw-r--r--src/dht/gnunet-service-dht_neighbours.c36
1 files changed, 25 insertions, 11 deletions
diff --git a/src/dht/gnunet-service-dht_neighbours.c b/src/dht/gnunet-service-dht_neighbours.c
index c4d6b7428..e4d9ec8ea 100644
--- a/src/dht/gnunet-service-dht_neighbours.c
+++ b/src/dht/gnunet-service-dht_neighbours.c
@@ -2428,12 +2428,19 @@ static enum GNUNET_GenericReturnValue
2428check_dht_p2p_hello (void *cls, 2428check_dht_p2p_hello (void *cls,
2429 const struct GNUNET_MessageHeader *hello) 2429 const struct GNUNET_MessageHeader *hello)
2430{ 2430{
2431 struct GNUNET_HELLO_Builder *b; 2431 struct Target *t = cls;
2432 struct PeerInfo *peer = t->pi;
2432 enum GNUNET_GenericReturnValue ret; 2433 enum GNUNET_GenericReturnValue ret;
2433 2434 size_t hellob_size;
2434 b = GNUNET_HELLO_builder_from_msg (hello); 2435 void *hellob;
2435 ret = (NULL == b) ? GNUNET_SYSERR : GNUNET_OK; 2436 struct GNUNET_TIME_Absolute expiration;
2436 GNUNET_HELLO_builder_free (b); 2437
2438 ret = GNUNET_HELLO_dht_msg_to_block (hello,
2439 &peer->id,
2440 &hellob,
2441 &hellob_size,
2442 &expiration);
2443 GNUNET_free (hellob);
2437 return ret; 2444 return ret;
2438} 2445}
2439 2446
@@ -2469,30 +2476,37 @@ GDS_u_receive (void *cls,
2469 const void *message, 2476 const void *message,
2470 size_t message_size) 2477 size_t message_size)
2471{ 2478{
2472 struct PeerInfo *pi = *tctx; 2479 struct Target *t = *tctx;
2473 struct GNUNET_MQ_MessageHandler core_handlers[] = { 2480 struct GNUNET_MQ_MessageHandler core_handlers[] = {
2474 GNUNET_MQ_hd_var_size (dht_p2p_get, 2481 GNUNET_MQ_hd_var_size (dht_p2p_get,
2475 GNUNET_MESSAGE_TYPE_DHT_P2P_GET, 2482 GNUNET_MESSAGE_TYPE_DHT_P2P_GET,
2476 struct PeerGetMessage, 2483 struct PeerGetMessage,
2477 pi), 2484 t),
2478 GNUNET_MQ_hd_var_size (dht_p2p_put, 2485 GNUNET_MQ_hd_var_size (dht_p2p_put,
2479 GNUNET_MESSAGE_TYPE_DHT_P2P_PUT, 2486 GNUNET_MESSAGE_TYPE_DHT_P2P_PUT,
2480 struct PeerPutMessage, 2487 struct PeerPutMessage,
2481 pi), 2488 t),
2482 GNUNET_MQ_hd_var_size (dht_p2p_result, 2489 GNUNET_MQ_hd_var_size (dht_p2p_result,
2483 GNUNET_MESSAGE_TYPE_DHT_P2P_RESULT, 2490 GNUNET_MESSAGE_TYPE_DHT_P2P_RESULT,
2484 struct PeerResultMessage, 2491 struct PeerResultMessage,
2485 pi), 2492 t),
2486 GNUNET_MQ_hd_var_size (dht_p2p_hello, 2493 GNUNET_MQ_hd_var_size (dht_p2p_hello,
2487 GNUNET_MESSAGE_TYPE_DHT_P2P_HELLO, 2494 GNUNET_MESSAGE_TYPE_DHT_P2P_HELLO,
2488 struct GNUNET_MessageHeader, 2495 struct GNUNET_MessageHeader,
2489 pi), 2496 t),
2490 GNUNET_MQ_handler_end () 2497 GNUNET_MQ_handler_end ()
2491 }; 2498 };
2492 const struct GNUNET_MessageHeader *mh = message; 2499 const struct GNUNET_MessageHeader *mh = message;
2493 2500
2494 (void) cls; /* the 'struct GDS_Underlay' */ 2501 (void) cls; /* the 'struct GDS_Underlay' */
2495 (void) sctx; /* our receiver address */ 2502 (void) sctx; /* our receiver address */
2503 if (NULL == t)
2504 {
2505 /* Received message claiming to originate from myself?
2506 Ignore! */
2507 GNUNET_break_op (0);
2508 return;
2509 }
2496 if (message_size < sizeof (*mh)) 2510 if (message_size < sizeof (*mh))
2497 { 2511 {
2498 GNUNET_break_op (0); 2512 GNUNET_break_op (0);
@@ -2506,7 +2520,7 @@ GDS_u_receive (void *cls,
2506 GNUNET_log (GNUNET_ERROR_TYPE_INFO, 2520 GNUNET_log (GNUNET_ERROR_TYPE_INFO,
2507 "Handling message of type %u from peer %s\n", 2521 "Handling message of type %u from peer %s\n",
2508 ntohs (mh->type), 2522 ntohs (mh->type),
2509 GNUNET_i2s (&pi->id)); 2523 GNUNET_i2s (&t->pi->id));
2510 if (GNUNET_OK != 2524 if (GNUNET_OK !=
2511 GNUNET_MQ_handle_message (core_handlers, 2525 GNUNET_MQ_handle_message (core_handlers,
2512 mh)) 2526 mh))