diff options
author | zuul <zuul@gerrit.asterisk.org> | 2016-07-13 18:48:39 -0500 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2016-07-13 18:48:39 -0500 |
commit | 3849f23bffe877fc7c54d177b2c6a7d932d91880 (patch) | |
tree | 7c8d9939b81c3bf4e1c38fb2b63160c7003490e5 /res | |
parent | c49833653bdbb10dc82ef32ae8503cd26ae3135c (diff) | |
parent | 0d487b53b13e9debb51ad8fe84b3767de5d25d75 (diff) |
Merge "res/res_pjsip_session: Check for presence of an active negotiator"
Diffstat (limited to 'res')
-rw-r--r-- | res/res_pjsip_session.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c index 9f98e34b8..a773c16fc 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -792,12 +792,14 @@ static int delay_request(struct ast_sip_session *session, static pjmedia_sdp_session *generate_session_refresh_sdp(struct ast_sip_session *session) { pjsip_inv_session *inv_session = session->inv_session; - const pjmedia_sdp_session *previous_sdp; + const pjmedia_sdp_session *previous_sdp = NULL; - if (pjmedia_sdp_neg_was_answer_remote(inv_session->neg)) { - pjmedia_sdp_neg_get_active_remote(inv_session->neg, &previous_sdp); - } else { - pjmedia_sdp_neg_get_active_local(inv_session->neg, &previous_sdp); + if (inv_session->neg) { + if (pjmedia_sdp_neg_was_answer_remote(inv_session->neg)) { + pjmedia_sdp_neg_get_active_remote(inv_session->neg, &previous_sdp); + } else { + pjmedia_sdp_neg_get_active_local(inv_session->neg, &previous_sdp); + } } return create_local_sdp(inv_session, session, previous_sdp); } @@ -917,7 +919,9 @@ int ast_sip_session_refresh(struct ast_sip_session *session, if (generate_new_sdp) { /* SDP can only be generated if current negotiation has already completed */ - if (pjmedia_sdp_neg_get_state(inv_session->neg) != PJMEDIA_SDP_NEG_STATE_DONE) { + if (inv_session->neg + && pjmedia_sdp_neg_get_state(inv_session->neg) + != PJMEDIA_SDP_NEG_STATE_DONE) { ast_debug(3, "Delay session refresh with new SDP to %s because SDP negotiation is not yet done...\n", ast_sorcery_object_get_id(session->endpoint)); return delay_request(session, on_request_creation, on_sdp_creation, |