aboutsummaryrefslogtreecommitdiff
path: root/src/dv/dv_api.c
diff options
context:
space:
mode:
authorNathan S. Evans <evans@in.tum.de>2010-06-17 15:27:19 +0000
committerNathan S. Evans <evans@in.tum.de>2010-06-17 15:27:19 +0000
commit344da83a5a06b4b4db4eb68972ee49333369f2db (patch)
tree9463373acc8f042ab2e05d27746dba6c0566bced /src/dv/dv_api.c
parent3084c1f3deba86b52b1e01fefbcf7474fe0f5d1c (diff)
downloadgnunet-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.c15
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;