/*
This file is part of GNUnet
- Copyright (C) 2013-2015 GNUnet e.V.
+ Copyright (C) 2013-2016 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
Boston, MA 02110-1301, USA.
*/
/**
- * @file set/gnunet-service-set_union.c msg->salt = htonl (op->state->salt_send);
+ * @file set/gnunet-service-set_union.c
* @brief two-peer set operations
* @author Florian Dold
static void
salt_key (const struct IBF_Key *k_in,
- uint32_t salt,
+ uint32_t salt,
struct IBF_Key *k_out)
{
int s = salt % 64;
uint64_t x = k_in->key_val;
+ /* rotate ibf key */
x = (x >> s) | (x << (64 - s));
k_out->key_val = x;
}
static void
unsalt_key (const struct IBF_Key *k_in,
- uint32_t salt,
+ uint32_t salt,
struct IBF_Key *k_out)
{
- int s = -(salt % 64);
+ int s = salt % 64;
uint64_t x = k_in->key_val;
- x = (x >> s) | (x << (64 - s));
+ x = (x << s) | (x >> (64 - s));
k_out->key_val = x;
}
ev = GNUNET_MQ_msg_header_extra (strata_msg,
len,
type);
- memcpy (&strata_msg[1],
+ GNUNET_memcpy (&strata_msg[1],
buf,
len);
GNUNET_free (buf);
{
/* decompression failed */
fail_union_operation (op);
+ strata_estimator_destroy (remote_se);
return GNUNET_SYSERR;
}
GNUNET_assert (NULL != op->state->se);
diff_ibf->size);
num_decoded = 0;
- last_key.key_val = 0;
+ key.key_val = 0; /* just to avoid compiler thinking we use undef'ed variable */
while (1)
{
(unsigned long) key.key_val);
num_decoded += 1;
if ( (num_decoded > diff_ibf->size) ||
- (num_decoded > 1 && last_key.key_val == key.key_val) )
+ ( (num_decoded > 1) &&
+ (last_key.key_val == key.key_val) ) )
{
LOG (GNUNET_ERROR_TYPE_DEBUG,
"detected cyclic ibf (decoded %u/%u)\n",
"# of IBF retries",
1,
GNUNET_NO);
- // FIXME: make salt work
- // op->state->salt_send++;
+ op->state->salt_send++;
if (GNUNET_OK !=
send_ibf (op, next_order))
{
sizeof (struct IBF_Key),
GNUNET_MESSAGE_TYPE_SET_UNION_P2P_INQUIRY);
msg->salt = htonl (op->state->salt_receive);
- memcpy (&msg[1],
+ GNUNET_memcpy (&msg[1],
&key,
sizeof (struct IBF_Key));
LOG (GNUNET_ERROR_TYPE_DEBUG,
rm->result_status = htons (status);
rm->request_id = htonl (op->spec->client_request_id);
rm->element_type = element->element_type;
- memcpy (&rm[1], element->data, element->size);
+ GNUNET_memcpy (&rm[1], element->data, element->size);
GNUNET_MQ_send (op->spec->set->client_mq, ev);
}
element_size = ntohs (mh->size) - sizeof (struct GNUNET_SET_ElementMessage);
ee = GNUNET_malloc (sizeof (struct ElementEntry) + element_size);
- memcpy (&ee[1], &emsg[1], element_size);
+ GNUNET_memcpy (&ee[1], &emsg[1], element_size);
ee->element.size = element_size;
ee->element.data = &ee[1];
ee->element.element_type = ntohs (emsg->element_type);
return;
}
ev = GNUNET_MQ_msg_extra (emsg, ee->element.size, GNUNET_MESSAGE_TYPE_SET_P2P_ELEMENTS);
- memcpy (&emsg[1], ee->element.data, ee->element.size);
+ GNUNET_memcpy (&emsg[1], ee->element.data, ee->element.size);
emsg->reserved = htons (0);
emsg->element_type = htons (ee->element.element_type);
LOG (GNUNET_ERROR_TYPE_DEBUG,
return;
}
msg->operation = htonl (GNUNET_SET_OPERATION_UNION);
- msg->app_id = op->spec->app_id;
GNUNET_MQ_send (op->mq,
ev);