mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 04:11:08 +00:00
chan_pjsip: Only set default audio stream on hold.
When a PJSIP channel is set on hold or off hold, all streams were set on/off hold. This is not the desired behaviour and caused issues when there were multiple streams in the topology. Now, only the default audio stream is set on/off hold when a hold is indicated. ASTERISK-30051 Change-Id: I04f1110565fd05fea565f5539b534b54549d4f71
This commit is contained in:
committed by
Joshua Colp
parent
42b191ad64
commit
a03b53bb7b
@@ -1471,18 +1471,13 @@ static int update_connected_line_information(void *data)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! \brief Callback which changes the value of locally held on the media stream */
|
|
||||||
static void local_hold_set_state(struct ast_sip_session_media *session_media, unsigned int held)
|
|
||||||
{
|
|
||||||
if (session_media) {
|
|
||||||
session_media->locally_held = held;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! \brief Update local hold state and send a re-INVITE with the new SDP */
|
/*! \brief Update local hold state and send a re-INVITE with the new SDP */
|
||||||
static int remote_send_hold_refresh(struct ast_sip_session *session, unsigned int held)
|
static int remote_send_hold_refresh(struct ast_sip_session *session, unsigned int held)
|
||||||
{
|
{
|
||||||
AST_VECTOR_CALLBACK_VOID(&session->active_media_state->sessions, local_hold_set_state, held);
|
struct ast_sip_session_media *session_media = session->active_media_state->default_session[AST_MEDIA_TYPE_AUDIO];
|
||||||
|
if (session_media) {
|
||||||
|
session_media->locally_held = held;
|
||||||
|
}
|
||||||
ast_sip_session_refresh(session, NULL, NULL, NULL, AST_SIP_SESSION_REFRESH_METHOD_INVITE, 1, NULL);
|
ast_sip_session_refresh(session, NULL, NULL, NULL, AST_SIP_SESSION_REFRESH_METHOD_INVITE, 1, NULL);
|
||||||
ao2_ref(session, -1);
|
ao2_ref(session, -1);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user