From: Joshua Colp Date: Fri, 22 Sep 2017 16:09:40 +0000 (-0500) Subject: Merge "res_pjsip_session: Change some asserts to warning/debug messages" into 15 X-Git-Tag: 15.1.0-rc1~53 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c96a5ffa6e89a5fec32cf16fe41e978ce9ffd4de;p=thirdparty%2Fasterisk.git Merge "res_pjsip_session: Change some asserts to warning/debug messages" into 15 --- c96a5ffa6e89a5fec32cf16fe41e978ce9ffd4de diff --cc res/res_pjsip_session.c index 163c2b8681,978c95a0c4..b5874574e2 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@@ -765,8 -769,31 +769,32 @@@ static int handle_negotiated_sdp(struc { int i; struct ast_stream_topology *topology; + unsigned int changed = 0; + /* This situation can legitimately happen when an SDP is received in a + * 183 Session Progress message. In that case, everything's been done + * by the time this function is called and there are no more pending + * streams. + */ + if (!session->pending_media_state->topology) { + ast_debug(1, "Pending topology was NULL for channel '%s'\n", + session->channel ? ast_channel_name(session->channel) : "unknown"); + return 0; + } + + /* If we're handling negotiated streams, then we should already have set + * up session media instances (and Asterisk streams) that correspond to + * the local SDP, and there should be the same number of session medias + * and streams as there are local SDP streams + */ + if (ast_stream_topology_get_count(session->pending_media_state->topology) != local->media_count + || AST_VECTOR_SIZE(&session->pending_media_state->sessions) != local->media_count) { + ast_log(LOG_WARNING, "Local SDP for channel '%s' contains %d media streams while we expected it to contain %u\n", + session->channel ? ast_channel_name(session->channel) : "unknown", + ast_stream_topology_get_count(session->pending_media_state->topology), local->media_count); + return -1; + } + for (i = 0; i < local->media_count; ++i) { struct ast_sip_session_media *session_media; struct ast_stream *stream;