summaryrefslogtreecommitdiffstats
path: root/3rdparty/openpgm-svn-r1135-0002-correct-checksum-calculation.patch
diff options
context:
space:
mode:
authorSebastien Braun2010-10-03 16:14:44 +0200
committerSebastien Braun2010-10-03 16:14:44 +0200
commitffee0868ef1341cfb7622821431cb73c52590962 (patch)
treebc96be65e0346ea25a8effb2118de59b08d54466 /3rdparty/openpgm-svn-r1135-0002-correct-checksum-calculation.patch
parentAdd patch for OpenPGM to fix switch() fallthrough (diff)
downloadpvs-ffee0868ef1341cfb7622821431cb73c52590962.tar.gz
pvs-ffee0868ef1341cfb7622821431cb73c52590962.tar.xz
pvs-ffee0868ef1341cfb7622821431cb73c52590962.zip
Assorted Multicast Fixes:
- Upgrade bundled OpenPGM to SVN r1135 - Timing fixes: Make all rate-limited and timer-pending operation wait for at least 1ms to avoid busy-waiting - No distinction between sending and receiving sockets when setting up socket options (Receivers need to be able to send anyway when using PGMCC). - Switch from fixed-rate transmission to using PGMCC for congestion control. - Remove some obnoxious debugging outputs - Some white space fixes - Introduce a short waiting time before actually starting file transmission in order to allow enough SPM messages to be sent so that receivers can initialize properly. - Fix MCASTFTANNOUNCE message to include full file name instead of basename. - Fix generateMcastTransferID in order to gather more random IDs. PVSGUI may become confused if transfer IDs are reused. - Properly dispose of clientFileReceiveDialog when multicast transfer is finished. - Properly display transfer size in clientFileReceiveDialog
Diffstat (limited to '3rdparty/openpgm-svn-r1135-0002-correct-checksum-calculation.patch')
-rw-r--r--3rdparty/openpgm-svn-r1135-0002-correct-checksum-calculation.patch17
1 files changed, 17 insertions, 0 deletions
diff --git a/3rdparty/openpgm-svn-r1135-0002-correct-checksum-calculation.patch b/3rdparty/openpgm-svn-r1135-0002-correct-checksum-calculation.patch
new file mode 100644
index 0000000..b78dc3c
--- /dev/null
+++ b/3rdparty/openpgm-svn-r1135-0002-correct-checksum-calculation.patch
@@ -0,0 +1,17 @@
+Problem: OpenPGM may calculate incorrect checksums when sending RDATA packets
+ if no ODATA packet has been sent before. When and why this
+ happens exactly is unknown.
+Solution: Always force recomputation of checksums until a more suitable
+ solution is found.
+
+--- openpgm-r1135-pristine/pgm/source.c 2010-09-09 03:24:47.000000000 +0200
++++ openpgm-svn-r1135/pgm/source.c 2010-09-30 18:32:04.000000000 +0200
+@@ -2295,7 +2295,7 @@
+ header->pgm_checksum = 0;
+ const size_t pgm_header_len = tpdu_length - ntohs(header->pgm_tsdu_length);
+ uint32_t unfolded_header = pgm_csum_partial (header, pgm_header_len, 0);
+- uint32_t unfolded_odata = pgm_txw_get_unfolded_checksum (skb);
++ uint32_t unfolded_odata = pgm_csum_partial (skb->data, ntohs(header->pgm_tsdu_length), 0);
+ header->pgm_checksum = pgm_csum_fold (pgm_csum_block_add (unfolded_header, unfolded_odata, pgm_header_len));
+
+ /* congestion control */