mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-16 09:46:22 +00:00
Added an option to disallow music on hold
Added an option "discard_remote_hold_retrieval" (default "no") that if set does not trigger the music on hold event. This essentially stops telling the peer to start music on hold. (issue ABE-2899) Reported by: Denis Alberto Martinez Review: https://reviewboard.asterisk.org/r/2336/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@382787 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -10744,14 +10744,18 @@ static int process_sdp(struct sip_pvt *p, struct sip_request *req, int t38action
|
||||
}
|
||||
|
||||
if (ast_test_flag(&p->flags[1], SIP_PAGE2_CALL_ONHOLD) && (!ast_sockaddr_isnull(sa) || !ast_sockaddr_isnull(vsa) || !ast_sockaddr_isnull(tsa) || !ast_sockaddr_isnull(isa)) && (!sendonly || sendonly == -1)) {
|
||||
ast_queue_control(p->owner, AST_CONTROL_UNHOLD);
|
||||
if (!ast_test_flag(&p->flags[2], SIP_PAGE3_DISCARD_REMOTE_HOLD_RETRIEVAL)) {
|
||||
ast_queue_control(p->owner, AST_CONTROL_UNHOLD);
|
||||
}
|
||||
/* Activate a re-invite */
|
||||
ast_queue_frame(p->owner, &ast_null_frame);
|
||||
change_hold_state(p, req, FALSE, sendonly);
|
||||
} else if ((sockaddr_is_null_or_any(sa) && sockaddr_is_null_or_any(vsa) && sockaddr_is_null_or_any(tsa) && sockaddr_is_null_or_any(isa)) || (sendonly && sendonly != -1)) {
|
||||
ast_queue_control_data(p->owner, AST_CONTROL_HOLD,
|
||||
if (!ast_test_flag(&p->flags[2], SIP_PAGE3_DISCARD_REMOTE_HOLD_RETRIEVAL)) {
|
||||
ast_queue_control_data(p->owner, AST_CONTROL_HOLD,
|
||||
S_OR(p->mohsuggest, NULL),
|
||||
!ast_strlen_zero(p->mohsuggest) ? strlen(p->mohsuggest) + 1 : 0);
|
||||
}
|
||||
if (sendonly)
|
||||
ast_rtp_instance_stop(p->rtp);
|
||||
/* RTCP needs to go ahead, even if we're on hold!!! */
|
||||
@@ -31034,6 +31038,8 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str
|
||||
ast_set2_flag(&peer->flags[2], ast_true(v->value), SIP_PAGE3_ICE_SUPPORT);
|
||||
} else if (!strcasecmp(v->name, "ignore_requested_pref")) {
|
||||
ast_set2_flag(&peer->flags[2], ast_true(v->value), SIP_PAGE3_IGNORE_PREFCAPS);
|
||||
} else if (!strcasecmp(v->name, "discard_remote_hold_retrieval")) {
|
||||
ast_set2_flag(&peer->flags[2], ast_true(v->value), SIP_PAGE3_DISCARD_REMOTE_HOLD_RETRIEVAL);
|
||||
} else {
|
||||
ast_rtp_dtls_cfg_parse(&peer->dtls_cfg, v->name, v->value);
|
||||
}
|
||||
@@ -32162,6 +32168,8 @@ static int reload_config(enum channelreloadreason reason)
|
||||
ast_set2_flag(&global_flags[2], ast_true(v->value), SIP_PAGE3_SNOM_AOC);
|
||||
} else if (!strcasecmp(v->name, "icesupport")) {
|
||||
ast_set2_flag(&global_flags[2], ast_true(v->value), SIP_PAGE3_ICE_SUPPORT);
|
||||
} else if (!strcasecmp(v->name, "discard_remote_hold_retrieval")) {
|
||||
ast_set2_flag(&global_flags[2], ast_true(v->value), SIP_PAGE3_DISCARD_REMOTE_HOLD_RETRIEVAL);
|
||||
} else if (!strcasecmp(v->name, "parkinglot")) {
|
||||
ast_copy_string(default_parkinglot, v->value, sizeof(default_parkinglot));
|
||||
} else if (!strcasecmp(v->name, "refer_addheaders")) {
|
||||
|
Reference in New Issue
Block a user