handling replies continuously from server
[oweals/gnunet.git] / src / util / crypto_crc.c
index bf8e058ad864b8ba242e19acacbcea4316464d9f..8bccf6b691625aeaf4709c27f6422ed68939f725 100644 (file)
@@ -125,14 +125,15 @@ GNUNET_CRYPTO_crc32_n (const void *buf, size_t len)
 uint32_t
 GNUNET_CRYPTO_crc16_step (uint32_t sum, const void *buf, size_t len)
 {
-  uint16_t *hdr = buf;
+  const uint16_t *hdr = buf;
   for (; len >= 2; len -= 2)
     sum += *(hdr++);
   if (len == 1)
-    sum += *((unsigned char *) hdr);
+    sum += (*hdr) & ntohs(0xFF00);
   return sum;
 }
 
+
 /**
  * Convert results from GNUNET_CRYPTO_crc16_step to final crc16.
  *
@@ -159,7 +160,7 @@ GNUNET_CRYPTO_crc16_finish (uint32_t sum)
 uint16_t
 GNUNET_CRYPTO_crc16_n (const void *buf, size_t len)
 {
-  uint16_t *hdr = buf;
+  const uint16_t *hdr = buf;
   uint32_t sum = GNUNET_CRYPTO_crc16_step (0, hdr, len);
 
   return GNUNET_CRYPTO_crc16_finish (sum);