aboutsummaryrefslogtreecommitdiff
path: root/src/setu
diff options
context:
space:
mode:
authorElias Summermatter <elias.summermatter@seccom.ch>2021-02-17 18:00:43 +0100
committerElias Summermatter <elias.summermatter@seccom.ch>2021-02-17 18:00:43 +0100
commit08adc88b441694e02c3e440836e4ff9585cf3f88 (patch)
treec500cf14a1c39cb605de7b1f985563ff0e770dee /src/setu
parentd5bf65f2bf7edea40b6f4250227d6c1711913f71 (diff)
downloadgnunet-08adc88b441694e02c3e440836e4ff9585cf3f88.tar.gz
gnunet-08adc88b441694e02c3e440836e4ff9585cf3f88.zip
Setu integrated new phase full receiving as described in rfc draft
Diffstat (limited to 'src/setu')
-rw-r--r--src/setu/gnunet-service-setu.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/setu/gnunet-service-setu.c b/src/setu/gnunet-service-setu.c
index 7ddece8e8..9ec482559 100644
--- a/src/setu/gnunet-service-setu.c
+++ b/src/setu/gnunet-service-setu.c
@@ -138,6 +138,12 @@ enum UnionOperationPhase
138 * that the local peer is missing. 138 * that the local peer is missing.
139 */ 139 */
140 PHASE_FULL_SENDING, 140 PHASE_FULL_SENDING,
141
142 /**
143 * Phase that receives full set first and then sends elements that are
144 * the local peer missing
145 */
146 PHASE_FULL_RECEIVING
141}; 147};
142 148
143 149
@@ -1448,7 +1454,7 @@ handle_union_p2p_strata_estimator (void *cls,
1448 1454
1449 LOG (GNUNET_ERROR_TYPE_DEBUG, 1455 LOG (GNUNET_ERROR_TYPE_DEBUG,
1450 "Telling other peer that we expect its full set\n"); 1456 "Telling other peer that we expect its full set\n");
1451 op->phase = PHASE_EXPECT_IBF; 1457 op->phase = PHASE_FULL_RECEIVING;
1452 ev = GNUNET_MQ_msg_header ( 1458 ev = GNUNET_MQ_msg_header (
1453 GNUNET_MESSAGE_TYPE_SETU_P2P_REQUEST_FULL); 1459 GNUNET_MESSAGE_TYPE_SETU_P2P_REQUEST_FULL);
1454 GNUNET_MQ_send (op->mq, 1460 GNUNET_MQ_send (op->mq,
@@ -2051,6 +2057,12 @@ check_union_p2p_full_element (void *cls,
2051{ 2057{
2052 struct Operation *op = cls; 2058 struct Operation *op = cls;
2053 2059
2060 // Allow only receiving of full element message if in expect IBF or in PHASE_FULL_RECEIVING state
2061 if ( op->phase != PHASE_EXPECT_IBF && op->phase != PHASE_FULL_RECEIVING ) {
2062 GNUNET_break_op (0);
2063 return GNUNET_SYSERR;
2064 }
2065
2054 (void) op; 2066 (void) op;
2055 // FIXME: check that we expect full elements here? 2067 // FIXME: check that we expect full elements here?
2056 return GNUNET_OK; 2068 return GNUNET_OK;
@@ -2072,6 +2084,8 @@ handle_union_p2p_full_element (void *cls,
2072 struct KeyEntry *ke; 2084 struct KeyEntry *ke;
2073 uint16_t element_size; 2085 uint16_t element_size;
2074 2086
2087 op->phase = PHASE_FULL_RECEIVING;
2088
2075 element_size = ntohs (emsg->header.size) 2089 element_size = ntohs (emsg->header.size)
2076 - sizeof(struct GNUNET_SETU_ElementMessage); 2090 - sizeof(struct GNUNET_SETU_ElementMessage);
2077 ee = GNUNET_malloc (sizeof(struct ElementEntry) + element_size); 2091 ee = GNUNET_malloc (sizeof(struct ElementEntry) + element_size);