diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2016-07-04 13:12:24 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2016-07-04 13:12:24 +0000 |
commit | 2c7d7baea1e3029c46d21d5ede820ccd17789a45 (patch) | |
tree | 688a6b24dd46db20440d3b02db62ebd37af9e1f1 /pjnath | |
parent | 5c6f2a39cdf57c5ca11d5a962d3c9433c5a792e1 (diff) |
Fix #1942: TURN socket should not start TURN allocation in state PJ_TURN_STATE_RESOLVED when previous state is already PJ_TURN_STATE_ALLOCATING.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5375 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath')
-rw-r--r-- | pjnath/src/pjnath/turn_sock.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/pjnath/src/pjnath/turn_sock.c b/pjnath/src/pjnath/turn_sock.c index 541175c6..20ddb0a7 100644 --- a/pjnath/src/pjnath/turn_sock.c +++ b/pjnath/src/pjnath/turn_sock.c @@ -737,6 +737,16 @@ static void turn_on_state(pj_turn_session *sess, return; } + if (old_state == PJ_TURN_STATE_ALLOCATING && + new_state == PJ_TURN_STATE_RESOLVED) + { + /* TURN session won't destroy itself upon allocation failure, it will + * just revert back TURN state to PJ_TURN_STATE_RESOLVED. So, let's + * avoid infinite loop here (see ticket #1942). + */ + return; + } + /* Notify app first */ if (turn_sock->cb.on_state) { (*turn_sock->cb.on_state)(turn_sock, old_state, new_state); |