[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] branch master updated: fix completely broken imple
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] branch master updated: fix completely broken implementation of variable size elements |
Date: |
Tue, 28 Feb 2017 18:53:33 +0100 |
This is an automated email from the git hooks/post-receive script.
dold pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new a9a6b98c5 fix completely broken implementation of variable size
elements
a9a6b98c5 is described below
commit a9a6b98c54f5cc3e680c8ea2f9c69e3955e2a7da
Author: Florian Dold <address@hidden>
AuthorDate: Tue Feb 28 18:53:31 2017 +0100
fix completely broken implementation of variable size elements
---
src/set/gnunet-set-profiler.c | 46 +++++++++++++++++++++++--------------------
1 file changed, 25 insertions(+), 21 deletions(-)
diff --git a/src/set/gnunet-set-profiler.c b/src/set/gnunet-set-profiler.c
index a6c900f5e..8404b191c 100644
--- a/src/set/gnunet-set-profiler.c
+++ b/src/set/gnunet-set-profiler.c
@@ -61,8 +61,7 @@ static struct GNUNET_SET_ListenHandle *set_listener;
static int byzantine;
static int force_delta;
static int force_full;
-
-static unsigned int element_length = 32;
+static unsigned int element_size = 32;
/**
* Handle to the statistics service.
@@ -92,7 +91,7 @@ map_remove_iterator (void *cls,
GNUNET_assert (NULL != key);
- ret = GNUNET_CONTAINER_multihashmap_remove (m, key, NULL);
+ ret = GNUNET_CONTAINER_multihashmap_remove_all (m, key);
if (GNUNET_OK != ret)
printf ("spurious element\n");
return GNUNET_YES;
@@ -198,7 +197,7 @@ set_result_cb (void *cls,
GNUNET_assert (0);
}
- if (element->size != sizeof (struct GNUNET_HashCode))
+ if (element->size != element_size)
{
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
"wrong element size: %u, expected %u\n",
@@ -210,8 +209,10 @@ set_result_cb (void *cls,
GNUNET_log (GNUNET_ERROR_TYPE_INFO, "set %s: got element (%s)\n",
info->id, GNUNET_h2s (element->data));
GNUNET_assert (NULL != element->data);
+ struct GNUNET_HashCode data_hash;
+ GNUNET_CRYPTO_hash (element->data, element_size, &data_hash);
GNUNET_CONTAINER_multihashmap_put (info->received,
- element->data, NULL,
+ &data_hash, NULL,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE);
}
@@ -265,14 +266,9 @@ set_insert_iterator (void *cls,
struct GNUNET_SET_Handle *set = cls;
struct GNUNET_SET_Element el;
- GNUNET_assert (element_length > 0);
- char payload[element_length];
-
- GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, payload,
element_length);
-
el.element_type = 0;
- el.data = payload;
- el.size = element_length;
+ el.data = value;
+ el.size = element_size;
GNUNET_SET_add_element (set, &el, NULL, NULL);
return GNUNET_YES;
}
@@ -325,6 +321,8 @@ run (void *cls,
config = cfg;
+ GNUNET_assert (element_size > 0);
+
if (GNUNET_OK != GNUNET_CRYPTO_get_peer_identity (cfg, &local_peer))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "could not retrieve host identity\n");
@@ -348,22 +346,28 @@ run (void *cls,
for (i = 0; i < num_a; i++)
{
- GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_STRONG, &hash);
- GNUNET_CONTAINER_multihashmap_put (info1.sent, &hash, NULL,
+ char *data = GNUNET_malloc (element_size);
+ GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, data,
element_size);
+ GNUNET_CRYPTO_hash (data, element_size, &hash);
+ GNUNET_CONTAINER_multihashmap_put (info1.sent, &hash, data,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE);
}
for (i = 0; i < num_b; i++)
{
- GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_STRONG, &hash);
- GNUNET_CONTAINER_multihashmap_put (info2.sent, &hash, NULL,
+ char *data = GNUNET_malloc (element_size);
+ GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, data,
element_size);
+ GNUNET_CRYPTO_hash (data, element_size, &hash);
+ GNUNET_CONTAINER_multihashmap_put (info2.sent, &hash, data,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE);
}
for (i = 0; i < num_c; i++)
{
- GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_STRONG, &hash);
- GNUNET_CONTAINER_multihashmap_put (common_sent, &hash, NULL,
+ char *data = GNUNET_malloc (element_size);
+ GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, data,
element_size);
+ GNUNET_CRYPTO_hash (data, element_size, &hash);
+ GNUNET_CONTAINER_multihashmap_put (common_sent, &hash, data,
GNUNET_CONTAINER_MULTIHASHMAPOPTION_REPLACE);
}
@@ -435,9 +439,6 @@ main (int argc, char **argv)
{ 'f', "force-full", NULL,
gettext_noop ("force sending full set"),
GNUNET_NO, &GNUNET_GETOPT_set_uint, &force_full },
- { 'w', "element-length", NULL,
- gettext_noop ("element length in byte"),
- GNUNET_NO, &GNUNET_GETOPT_set_uint, &element_length },
{ 'd', "force-delta", NULL,
gettext_noop ("number delta operation"),
GNUNET_NO, &GNUNET_GETOPT_set_uint, &force_delta },
@@ -447,6 +448,9 @@ main (int argc, char **argv)
{ 'x', "operation", NULL,
gettext_noop ("operation to execute"),
GNUNET_YES, &GNUNET_GETOPT_set_string, &op_str },
+ { 'w', "element-size", NULL,
+ gettext_noop ("element size"),
+ GNUNET_YES, &GNUNET_GETOPT_set_uint, &element_size },
{ 's', "statistics", NULL,
gettext_noop ("write statistics to file"),
GNUNET_YES, &GNUNET_GETOPT_set_filename, &statistics_filename },
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [gnunet] branch master updated: fix completely broken implementation of variable size elements,
gnunet <=