res_pjsip_session: Reset pending_media_state->read_callbacks

In handle_negotiated_sdp the pending_media_state->read_callbacks must be
reset before they are added in the SDP handlers in
handle_negotiated_sdp_session_media. Otherwise, old callbacks for
removed streams and file descriptors could be added to the channel and
Asterisk would poll on non-existing file descriptors.

Resolves: #611
This commit is contained in:
Maximilian Fridrich 2024-02-15 17:07:27 +01:00 committed by asterisk-org-access-app[bot]
parent 67613d19d6
commit e8cfed4516
1 changed files with 2 additions and 0 deletions

View File

@ -1115,6 +1115,8 @@ static int handle_negotiated_sdp(struct ast_sip_session *session, const pjmedia_
SCOPE_EXIT_RTN_VALUE(-1, "Media stream count mismatch\n");
}
AST_VECTOR_RESET(&session->pending_media_state->read_callbacks, AST_VECTOR_ELEM_CLEANUP_NOOP);
for (i = 0; i < local->media_count; ++i) {
struct ast_sip_session_media *session_media;
struct ast_stream *stream;