summaryrefslogtreecommitdiff
path: root/pjnath
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2016-07-04 13:12:24 +0000
committerNanang Izzuddin <nanang@teluu.com>2016-07-04 13:12:24 +0000
commit2c7d7baea1e3029c46d21d5ede820ccd17789a45 (patch)
tree688a6b24dd46db20440d3b02db62ebd37af9e1f1 /pjnath
parent5c6f2a39cdf57c5ca11d5a962d3c9433c5a792e1 (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.c10
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);