conncheck: wait for a pair until all stun requests are completed
authorFabrice Bellet <fabrice@bellet.info>
Sun, 5 Apr 2020 19:11:19 +0000 (21:11 +0200)
committerOlivier CrĂȘte <olivier.crete@ocrete.ca>
Mon, 4 May 2020 22:12:10 +0000 (22:12 +0000)
commit19c599a039fbc2c39e5dedf84fefb7af49d8cf57
treef39e928df33b9b53025a15f39b2fc6400b8a7e49
parenta04fa4d49236c91139f5128ace1f81012e791cbd
conncheck: wait for a pair until all stun requests are completed

Only the newest stun request may need to be retransmitted, according to
the pair retransmit flag. This is the first element of the
stun_transactions list. Older stun requests are just kept around until
their timeout expires, without retransmission.

The newest stun request is usually the last one that will timeout.
Current code was based on that assumption, causing the pair to fail when
the newest stun request timeout expires. This is not always true, and some
older stun requests may have a greater timeout delay.

So, we should wait until *all* stun requests of a given pair have
reached their timeout.

We also refactor this part of the code, to handle the first stun and the
other stun requests in the same loop.
agent/conncheck.c