From: Joshua Colp Date: Wed, 2 Oct 2013 15:33:56 +0000 (+0000) Subject: Fix a random one way audio issue in PJSIP. X-Git-Tag: 13.0.0-beta1~1019 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=424c0f2eb7ff45a06a21b2d81532ac49e24e8b60;p=thirdparty%2Fasterisk.git Fix a random one way audio issue in PJSIP. Due to the asynchronous design of the PJMEDIA SDP negotiator it was possible for the SDP to be negotiated *after* a channel was created and after it was being wait on by an application. It is only after negotiation occurs that the file descriptors for RTP are placed on the channel. Since the channel was already being waited on these file descriptors were not monitored, causing incoming media to never be read. This change wakes up any application waiting on the channel so that added file descriptors end up being monitored. (closes issue AST-1227) Reported by: John Bigelow ........ Merged revisions 400256 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@400257 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c index 965f66ba4d..9cb85dcf0d 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -472,6 +472,7 @@ static int handle_negotiated_sdp(struct ast_sip_session *session, const pjmedia_ successful = ao2_callback(session->media, OBJ_MULTIPLE, handle_negotiated_sdp_session_media, &callback_data); if (successful && ao2_container_count(successful->c) == ao2_container_count(session->media)) { /* Nothing experienced a catastrophic failure */ + ast_queue_frame(session->channel, &ast_null_frame); return 0; } return -1;