mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 20:04:50 +00:00
res_rtp_asterisk: Fails to resume WebRTC call from hold
In ast_rtp_ice_start if the ice session create check list failed, start check was never initiated and ice_started was never set to true. Upon re-entering the function (for instance, [un]hold) it would try to create the check list again with duplicate remote candidates. Fixed so that if the create check list fails the necessary data structures are properly re-initialized for any subsequent retries. Note, it was decided to not stop ice support (by calling ast_rtp_ice_stop) on a check list failure because it possible things might still work. However, a debug message was added to help with any future troubleshooting. (closes issue ASTERISK-22911) Reported by: Vytis Valentinavičius Patches: works_on_my_machine.patch uploaded by xytis (license 6558) ........ Merged revisions 405234 from http://svn.asterisk.org/svn/asterisk/branches/11 ........ Merged revisions 405235 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@405236 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -555,7 +555,17 @@ static void ast_rtp_ice_start(struct ast_rtp_instance *instance)
|
||||
pj_timer_heap_poll(timerheap, NULL);
|
||||
rtp->ice_started = 1;
|
||||
rtp->strict_rtp_state = STRICT_RTP_OPEN;
|
||||
return;
|
||||
}
|
||||
|
||||
/* even though create check list failed don't stop ice as
|
||||
it might still work */
|
||||
ast_debug(1, "Failed to create ICE session check list\n");
|
||||
/* however we do need to reset remote candidates since
|
||||
this function may be re-entered */
|
||||
ao2_ref(rtp->remote_candidates, -1);
|
||||
rtp->remote_candidates = NULL;
|
||||
rtp->ice->rcand_cnt = rtp->ice->clist.count = 0;
|
||||
}
|
||||
|
||||
static void ast_rtp_ice_stop(struct ast_rtp_instance *instance)
|
||||
|
Reference in New Issue
Block a user