gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnunet] branch master updated: fix set element type proble


From: gnunet
Subject: [GNUnet-SVN] [gnunet] branch master updated: fix set element type problem, make consensus work
Date: Mon, 27 Feb 2017 05:10:55 +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 ee3327de8 fix set element type problem, make consensus work
ee3327de8 is described below

commit ee3327de8fd04b2b8ce8692560c9f1d01a822baa
Author: Florian Dold <address@hidden>
AuthorDate: Mon Feb 27 05:10:52 2017 +0100

    fix set element type problem, make consensus work
---
 src/consensus/consensus_protocol.h       |  6 ++++++
 src/consensus/gnunet-service-consensus.c | 25 +++++++++++++++----------
 src/consensus/test_consensus.conf        |  4 ++--
 src/include/gnunet_set_service.h         |  4 ++++
 src/set/gnunet-service-set_union.c       |  3 ++-
 5 files changed, 29 insertions(+), 13 deletions(-)

diff --git a/src/consensus/consensus_protocol.h 
b/src/consensus/consensus_protocol.h
index fa445dc2e..e0002de56 100644
--- a/src/consensus/consensus_protocol.h
+++ b/src/consensus/consensus_protocol.h
@@ -123,6 +123,12 @@ struct ConsensusSizeElement
   uint8_t sender_index;
 };
 
+struct ConsensusStuffedElement
+{
+  struct ConsensusElement ce GNUNET_PACKED;
+  struct GNUNET_HashCode rand GNUNET_PACKED;
+};
+
 
 GNUNET_NETWORK_STRUCT_END
 
diff --git a/src/consensus/gnunet-service-consensus.c 
b/src/consensus/gnunet-service-consensus.c
index 8b02031fd..6662ae8ca 100644
--- a/src/consensus/gnunet-service-consensus.c
+++ b/src/consensus/gnunet-service-consensus.c
@@ -915,6 +915,11 @@ set_result_cb (void *cls,
 
   if (NULL != element)
   {
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "P%u: got element of type %u, status %u\n",
+                session->local_peer_idx,
+                (unsigned) element->element_type,
+                (unsigned) status);
     GNUNET_assert (GNUNET_BLOCK_TYPE_CONSENSUS_ELEMENT == 
element->element_type);
     consensus_element = element->data;
   }
@@ -1371,21 +1376,21 @@ commit_set (struct ConsensusSession *session,
         }
         for (i = 0; i < evil.num; i++)
         {
-          struct GNUNET_HashCode hash;
           struct GNUNET_SET_Element element;
-          element.data = &hash;
-          element.size = sizeof (struct GNUNET_HashCode);
-          element.element_type = 0;
+          struct ConsensusStuffedElement se = { 0 };
+          element.data = &se;
+          element.size = sizeof (struct ConsensusStuffedElement);
+          element.element_type = GNUNET_BLOCK_TYPE_CONSENSUS_ELEMENT;
 
           if (EVILNESS_SUB_REPLACEMENT == evil.subtype)
           {
             /* Always generate a new element. */
-            GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK, 
&hash);
+            GNUNET_CRYPTO_hash_create_random (GNUNET_CRYPTO_QUALITY_WEAK, 
&se.rand);
           }
           else if (EVILNESS_SUB_NO_REPLACEMENT == evil.subtype)
           {
             /* Always cram the same elements, derived from counter. */
-            GNUNET_CRYPTO_hash (&i, sizeof (i), &hash);
+            GNUNET_CRYPTO_hash (&i, sizeof (i), &se.rand);
           }
           else
           {
@@ -2103,8 +2108,8 @@ task_start_reconcile (struct TaskEntry *task)
                 session->local_peer_idx, task->key.peer2, debug_str_set_key 
(&setop->input_set));
 
     struct GNUNET_SET_Option opts[] = {
-      {GNUNET_SET_OPTION_BYZANTINE, { .num = session->lower_bound } },
-      {0},
+      { GNUNET_SET_OPTION_BYZANTINE, { .num = session->lower_bound } },
+      { GNUNET_SET_OPTION_END },
     };
 
     // XXX: maybe this should be done while
@@ -2539,8 +2544,8 @@ set_listen_cb (void *cls,
                     (task->key.peer2 == session->local_peer_idx)));
 
   struct GNUNET_SET_Option opts[] = {
-    {GNUNET_SET_OPTION_BYZANTINE, { .num = session->lower_bound } },
-    {0},
+    { GNUNET_SET_OPTION_BYZANTINE, { .num = session->lower_bound } },
+    { GNUNET_SET_OPTION_END },
   };
 
   task->cls.setop.op = GNUNET_SET_accept (request,
diff --git a/src/consensus/test_consensus.conf 
b/src/consensus/test_consensus.conf
index c3077b65d..c75205739 100644
--- a/src/consensus/test_consensus.conf
+++ b/src/consensus/test_consensus.conf
@@ -5,7 +5,7 @@ GNUNET_TEST_HOME = /tmp/test-consensus/
 #OPTIONS = -L INFO
 BINARY = gnunet-service-evil-consensus
 
-PREFIX = valgrind
+#PREFIX = valgrind
 
 #EVIL_SPEC = 0;cram-all;noreplace;5
 #EVIL_SPEC = 0;cram;5/1;cram;5
@@ -41,7 +41,7 @@ OPTIONS = -LERROR
 [set]
 #OPTIONS = -L INFO
 #PREFIX = valgrind --leak-check=full
-#PREFIX = valgrind
+PREFIX = valgrind
 
 [testbed]
 OVERLAY_TOPOLOGY = CLIQUE
diff --git a/src/include/gnunet_set_service.h b/src/include/gnunet_set_service.h
index ca46d8746..6e822d82e 100644
--- a/src/include/gnunet_set_service.h
+++ b/src/include/gnunet_set_service.h
@@ -220,6 +220,10 @@ struct GNUNET_SET_Element
 enum GNUNET_SET_OptionType
 {
   /**
+   * List terminator.
+   */
+  GNUNET_SET_OPTION_END=0,
+  /**
    * Fail set operations when the other peer shows weird behavior
    * that might by a Byzantine fault.
    *
diff --git a/src/set/gnunet-service-set_union.c 
b/src/set/gnunet-service-set_union.c
index 6b0520374..c69aa2a9c 100644
--- a/src/set/gnunet-service-set_union.c
+++ b/src/set/gnunet-service-set_union.c
@@ -785,8 +785,9 @@ send_element_iterator (void *cls,
   struct GNUNET_SET_Element *el = &ee->element;
   struct GNUNET_MQ_Envelope *ev;
 
+
   ev = GNUNET_MQ_msg_extra (emsg, el->size, 
GNUNET_MESSAGE_TYPE_SET_UNION_P2P_FULL_ELEMENT);
-  emsg->element_type = htonl (el->element_type);
+  emsg->element_type = htons (el->element_type);
   GNUNET_memcpy (&emsg[1], el->data, el->size);
   GNUNET_MQ_send (op->mq, ev);
   return GNUNET_YES;

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]