[Asterisk-code-review] res_pjsip_refer: ensure refer progress is still sent after Proceeding() (asterisk[16])
lvl
asteriskteam at digium.com
Tue Mar 3 11:00:25 CST 2020
lvl has uploaded this change for review. ( https://gerrit.asterisk.org/c/asterisk/+/13852 )
Change subject: res_pjsip_refer: ensure refer progress is still sent after Proceeding()
......................................................................
res_pjsip_refer: ensure refer progress is still sent after Proceeding()
ASTERISK-28766 #close
Change-Id: I5ce2210062f9325db762edbf6e46075079bb2cd1
---
M res/res_pjsip_refer.c
1 file changed, 4 insertions(+), 3 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/52/13852/1
diff --git a/res/res_pjsip_refer.c b/res/res_pjsip_refer.c
index d53b76d..06bbd2e 100644
--- a/res/res_pjsip_refer.c
+++ b/res/res_pjsip_refer.c
@@ -233,11 +233,12 @@
/* Determine the state of the REFER based on the control frames (or voice frames) passing */
if (f->frametype == AST_FRAME_VOICE && !progress->subclass) {
/* Media is passing without progress, this means the call has been answered */
+ progress->subclass = AST_CONTROL_ANSWER;
notification = refer_progress_notification_alloc(progress, 200, PJSIP_EVSUB_STATE_TERMINATED);
} else if (f->frametype == AST_FRAME_CONTROL) {
/* Based on the control frame being written we can send a NOTIFY advising of the progress */
if ((f->subclass.integer == AST_CONTROL_RING) || (f->subclass.integer == AST_CONTROL_RINGING)) {
- progress->subclass = f->subclass.integer;
+ /* Don't set progress->subclass; an ANSWER can still follow */
notification = refer_progress_notification_alloc(progress, 180, PJSIP_EVSUB_STATE_ACTIVE);
} else if (f->subclass.integer == AST_CONTROL_BUSY) {
progress->subclass = f->subclass.integer;
@@ -246,10 +247,10 @@
progress->subclass = f->subclass.integer;
notification = refer_progress_notification_alloc(progress, 503, PJSIP_EVSUB_STATE_TERMINATED);
} else if (f->subclass.integer == AST_CONTROL_PROGRESS) {
- progress->subclass = f->subclass.integer;
+ /* Don't set progress->subclass; an ANSWER can still follow */
notification = refer_progress_notification_alloc(progress, 183, PJSIP_EVSUB_STATE_ACTIVE);
} else if (f->subclass.integer == AST_CONTROL_PROCEEDING) {
- progress->subclass = f->subclass.integer;
+ /* Don't set progress->subclass; an ANSWER can still follow */
notification = refer_progress_notification_alloc(progress, 100, PJSIP_EVSUB_STATE_ACTIVE);
} else if (f->subclass.integer == AST_CONTROL_ANSWER) {
progress->subclass = f->subclass.integer;
--
To view, visit https://gerrit.asterisk.org/c/asterisk/+/13852
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings
Gerrit-Project: asterisk
Gerrit-Branch: 16
Gerrit-Change-Id: I5ce2210062f9325db762edbf6e46075079bb2cd1
Gerrit-Change-Number: 13852
Gerrit-PatchSet: 1
Gerrit-Owner: lvl <digium at lvlconsultancy.nl>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20200303/16858522/attachment.html>
More information about the asterisk-code-review
mailing list