diff options
author | Timo Sarawinski | 2020-02-07 17:16:53 +0100 |
---|---|---|
committer | Timo Sarawinski | 2020-02-07 17:16:53 +0100 |
commit | 726c32ac123783425b4a66f702713cd97a27a902 (patch) | |
tree | bec6a5acd284980c6ae3a0b0de3a8f802bdad24b /fix-checksum-calculation.patch | |
download | aur-726c32ac123783425b4a66f702713cd97a27a902.tar.gz |
first release
Diffstat (limited to 'fix-checksum-calculation.patch')
-rw-r--r-- | fix-checksum-calculation.patch | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/fix-checksum-calculation.patch b/fix-checksum-calculation.patch new file mode 100644 index 000000000000..66d39bf8bc05 --- /dev/null +++ b/fix-checksum-calculation.patch @@ -0,0 +1,41 @@ +From 93b5ace42268160ebbfff4c61818fb15fa2d9b99 Mon Sep 17 00:00:00 2001 +From: Sebastian Woelke <Sebastian.Woelke@posteo.de> +Date: Thu, 24 Aug 2017 14:41:50 +0200 +Subject: [PATCH] Fix checksum calculation + +--- + mcproxy/src/utils/mroute_socket.cpp | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/src/utils/mroute_socket.cpp b/src/utils/mroute_socket.cpp +index 61289ddb..3a553591 100644 +--- a/src/utils/mroute_socket.cpp ++++ b/src/utils/mroute_socket.cpp +@@ -157,17 +157,23 @@ u_int16_t mroute_socket::calc_checksum(const unsigned char* buf, int buf_size) c + + u_int16_t* b = (u_int16_t*)buf; + int sum = 0; ++ int csum; + + for (int i = 0; i < buf_size / 2; i++) { +- ADD_SIGNED_NUM_U16(sum, b[i]); +- //sum +=b[i]; ++ sum +=b[i]; + } + + if (buf_size % 2 == 1) { +- //sum += buf[buf_size-1]; +- ADD_SIGNED_NUM_U16(sum, buf[buf_size - 1]); ++ sum += buf[buf_size-1]; + } + ++ // fold checksum ++ csum = sum & 0xFFFF; ++ sum = sum >> 16; ++ sum += csum; ++ // fold again in case of overflow. ++ sum += sum >> 16; ++ + return ~sum; + } + |