-try converting doubles to network byte order
authorChristian Grothoff <christian@grothoff.org>
Thu, 5 Jan 2012 15:10:46 +0000 (15:10 +0000)
committerChristian Grothoff <christian@grothoff.org>
Thu, 5 Jan 2012 15:10:46 +0000 (15:10 +0000)
src/nse/gnunet-service-nse.c
src/nse/nse_api.c
src/util/common_endian.c

index 6617fdfea043f6712e1c08abcc85bc04aa9b88ab..2b391b1c43e81945caa8ebff9d5f91d3e0ab7860 100644 (file)
@@ -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);
 }
index db5e9d1174433c0a34d0c92f1d102b9bc7bd563e..4d5f6bb714232a7b5a5ed1fa298746b8114fa5e7 100644 (file)
@@ -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);
 }
index 34a1dbf549238543916f1dac06b3fc2cf803dae7..3a13214636433aad83b7b315b8ae2b3fa17e0b2f 100644 (file)
@@ -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 */