diff options
author | Nathan S. Evans <evans@in.tum.de> | 2010-06-17 15:27:19 +0000 |
---|---|---|
committer | Nathan S. Evans <evans@in.tum.de> | 2010-06-17 15:27:19 +0000 |
commit | 344da83a5a06b4b4db4eb68972ee49333369f2db (patch) | |
tree | 9463373acc8f042ab2e05d27746dba6c0566bced /src/dv/dv_api.c | |
parent | 3084c1f3deba86b52b1e01fefbcf7474fe0f5d1c (diff) | |
download | gnunet-344da83a5a06b4b4db4eb68972ee49333369f2db.tar.gz gnunet-344da83a5a06b4b4db4eb68972ee49333369f2db.zip |
working distance vector transport plugin implementation. after spending days on it I think the problem (not all peers connect all the time) either lies in core, or is related to latency
Diffstat (limited to 'src/dv/dv_api.c')
-rw-r--r-- | src/dv/dv_api.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/dv/dv_api.c b/src/dv/dv_api.c index b7337d45c..25905828b 100644 --- a/src/dv/dv_api.c +++ b/src/dv/dv_api.c | |||
@@ -456,10 +456,13 @@ int GNUNET_DV_send (struct GNUNET_DV_Handle *dv_handle, | |||
456 | struct SendCallbackContext *send_ctx; | 456 | struct SendCallbackContext *send_ctx; |
457 | char *end_of_message; | 457 | char *end_of_message; |
458 | GNUNET_HashCode uidhash; | 458 | GNUNET_HashCode uidhash; |
459 | #if DEBUG_DV | 459 | #if DEBUG_DV_MESSAGES |
460 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "DV SEND called with message of size %d, address size %d, total size to send is %d\n", msgbuf_size, addrlen, sizeof(struct GNUNET_DV_SendMessage) + msgbuf_size + addrlen); | 460 | dv_handle->uid_gen = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_STRONG, UINT32_MAX); |
461 | #endif | 461 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "GNUNET_DV_send called with message of size %d, address size %d, total size %d, uid %u\n", msgbuf_size, addrlen, sizeof(struct GNUNET_DV_SendMessage) + msgbuf_size + addrlen, dv_handle->uid_gen); |
462 | #else | ||
462 | dv_handle->uid_gen++; | 463 | dv_handle->uid_gen++; |
464 | #endif | ||
465 | |||
463 | msg = GNUNET_malloc(sizeof(struct GNUNET_DV_SendMessage) + addrlen + msgbuf_size); | 466 | msg = GNUNET_malloc(sizeof(struct GNUNET_DV_SendMessage) + addrlen + msgbuf_size); |
464 | msg->header.size = htons(sizeof(struct GNUNET_DV_SendMessage) + addrlen + msgbuf_size); | 467 | msg->header.size = htons(sizeof(struct GNUNET_DV_SendMessage) + addrlen + msgbuf_size); |
465 | msg->header.type = htons(GNUNET_MESSAGE_TYPE_TRANSPORT_DV_SEND); | 468 | msg->header.type = htons(GNUNET_MESSAGE_TYPE_TRANSPORT_DV_SEND); |
@@ -474,17 +477,11 @@ int GNUNET_DV_send (struct GNUNET_DV_Handle *dv_handle, | |||
474 | end_of_message = &end_of_message[addrlen]; | 477 | end_of_message = &end_of_message[addrlen]; |
475 | memcpy(end_of_message, msgbuf, msgbuf_size); | 478 | memcpy(end_of_message, msgbuf, msgbuf_size); |
476 | add_pending(dv_handle, msg); | 479 | add_pending(dv_handle, msg); |
477 | |||
478 | send_ctx = GNUNET_malloc(sizeof(struct SendCallbackContext)); | 480 | send_ctx = GNUNET_malloc(sizeof(struct SendCallbackContext)); |
479 | |||
480 | send_ctx->cont = cont; | 481 | send_ctx->cont = cont; |
481 | |||
482 | send_ctx->cont_cls = cont_cls; | 482 | send_ctx->cont_cls = cont_cls; |
483 | memcpy(&send_ctx->target, target, sizeof(struct GNUNET_PeerIdentity)); | 483 | memcpy(&send_ctx->target, target, sizeof(struct GNUNET_PeerIdentity)); |
484 | |||
485 | hash_from_uid(dv_handle->uid_gen, &uidhash); | 484 | hash_from_uid(dv_handle->uid_gen, &uidhash); |
486 | |||
487 | GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "set uid of %u or %u, hash of %s !!!!\n", dv_handle->uid_gen, htonl(dv_handle->uid_gen), GNUNET_h2s(&uidhash)); | ||
488 | GNUNET_CONTAINER_multihashmap_put(dv_handle->send_callbacks, &uidhash, send_ctx, GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE); | 485 | GNUNET_CONTAINER_multihashmap_put(dv_handle->send_callbacks, &uidhash, send_ctx, GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE); |
489 | 486 | ||
490 | return GNUNET_OK; | 487 | return GNUNET_OK; |