diff options
author | Sebastien Braun | 2010-10-03 16:14:44 +0200 |
---|---|---|
committer | Sebastien Braun | 2010-10-03 16:14:44 +0200 |
commit | ffee0868ef1341cfb7622821431cb73c52590962 (patch) | |
tree | bc96be65e0346ea25a8effb2118de59b08d54466 /3rdparty/openpgm-svn-r1135-0001-sigsegv-in-txw.patch | |
parent | Add patch for OpenPGM to fix switch() fallthrough (diff) | |
download | pvs-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.patch | 28 |
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); |