From: Christian Grothoff Date: Thu, 5 Jan 2012 15:10:46 +0000 (+0000) Subject: -try converting doubles to network byte order X-Git-Tag: initial-import-from-subversion-38251~15421 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=aa79ba473f5351a046f870601524ba628aaa11b5;p=oweals%2Fgnunet.git -try converting doubles to network byte order --- diff --git a/src/nse/gnunet-service-nse.c b/src/nse/gnunet-service-nse.c index 6617fdfea..2b391b1c4 100644 --- a/src/nse/gnunet-service-nse.c +++ b/src/nse/gnunet-service-nse.c @@ -385,11 +385,12 @@ setup_estimate_message (struct GNUNET_NSE_ClientMessage *em) em->header.type = htons (GNUNET_MESSAGE_TYPE_NSE_ESTIMATE); em->reserved = htonl (0); em->timestamp = GNUNET_TIME_absolute_hton (GNUNET_TIME_absolute_get ()); - em->size_estimate = mean - 0.332747; + double se = mean - 0.332747; nsize = log2 (GNUNET_CONTAINER_multihashmap_size (peers) + 1); if (em->size_estimate < nsize) - em->size_estimate = nsize; - em->std_deviation = std_dev; + se = nsize; + em->size_estimate = GNUNET_hton_double (se); + em->std_deviation = GNUNET_hton_double (std_dev); GNUNET_STATISTICS_set (stats, "# nodes in the network (estimate)", (uint64_t) pow (2, mean - 1.0 / 3.0), GNUNET_NO); } diff --git a/src/nse/nse_api.c b/src/nse/nse_api.c index db5e9d117..4d5f6bb71 100644 --- a/src/nse/nse_api.c +++ b/src/nse/nse_api.c @@ -120,7 +120,8 @@ message_handler (void *cls, const struct GNUNET_MessageHeader *msg) } client_msg = (const struct GNUNET_NSE_ClientMessage *) msg; h->recv_cb (h->recv_cb_cls, GNUNET_TIME_absolute_ntoh (client_msg->timestamp), - client_msg->size_estimate, client_msg->std_deviation); + GNUNET_ntoh_double (client_msg->size_estimate), + GNUNET_ntoh_double (client_msg->std_deviation)); GNUNET_CLIENT_receive (h->client, &message_handler, h, GNUNET_TIME_UNIT_FOREVER_REL); } diff --git a/src/util/common_endian.c b/src/util/common_endian.c index 34a1dbf54..3a1321463 100644 --- a/src/util/common_endian.c +++ b/src/util/common_endian.c @@ -50,5 +50,33 @@ GNUNET_htonll (uint64_t n) } +double +GNUNET_hton_double (double d) +{ + double res; + unsigned int *in = (unsigned int *) &d; + unsigned int *out = (unsigned int *) &res; + + out[0] = htonl(in[0]); + out[1] = htonl(in[1]); + + return res; +} + + +double +GNUNET_ntoh_double (double d) +{ + double res; + unsigned int *in = (unsigned int *) &d; + unsigned int *out = (unsigned int *) &res; + + out[0] = ntohl(in[0]); + out[1] = ntohl(in[1]); + + return res; +} + + /* end of common_endian.c */