summaryrefslogtreecommitdiffstats
path: root/3rdparty/openpgm-svn-r1135-0001-sigsegv-in-txw.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-0001-sigsegv-in-txw.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-0001-sigsegv-in-txw.patch')
-rw-r--r--3rdparty/openpgm-svn-r1135-0001-sigsegv-in-txw.patch28
1 files changed, 28 insertions, 0 deletions
diff --git a/3rdparty/openpgm-svn-r1135-0001-sigsegv-in-txw.patch b/3rdparty/openpgm-svn-r1135-0001-sigsegv-in-txw.patch
new file mode 100644
index 0000000..af6d4fd
--- /dev/null
+++ b/3rdparty/openpgm-svn-r1135-0001-sigsegv-in-txw.patch
@@ -0,0 +1,28 @@
+Problem: OpenPGM generates a SIGSEGV upon accessing peer->sock->use_pgmcc.
+ This is because the code assumes that the queue list entry comes first
+ in the definition of struct pgm_peer_t, which it does not (anymore?).
+
+diff -Naur openpgm-r1135-pristine/pgm/receiver.c openpgm-svn-r1135/pgm/receiver.c
+--- openpgm-r1135-pristine/pgm/receiver.c 2010-09-06 20:41:52.000000000 +0200
++++ openpgm-svn-r1135/pgm/receiver.c 2010-09-24 12:40:07.000000000 +0200
+@@ -71,7 +71,9 @@
+ pgm_assert (NULL != window);
+ pgm_assert (NULL != window->ack_backoff_queue.tail);
+
+- const struct pgm_peer_t* peer = (const struct pgm_peer_t*)window->ack_backoff_queue.tail;
++ const struct pgm_peer_t* peer = (const struct pgm_peer_t*)window->ack_backoff_queue.tail->data;
++ pgm_assert (NULL != peer);
++
+ pgm_assert (peer->sock->use_pgmcc);
+ return peer->ack_rb_expiry;
+ }
+@@ -416,6 +418,9 @@
+ sock->ack_c_p);
+ peer->spmr_expiry = now + sock->spmr_expiry;
+
++/* Prepare ack_link */
++ peer->ack_link.data = peer;
++
+ /* add peer to hash table and linked list */
+ pgm_rwlock_writer_lock (&sock->peers_lock);
+ pgm_peer_t* entry = _pgm_peer_ref (peer);