aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-07-23 15:48:10 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-07-23 15:48:10 +0000
commit2244c5b4090feb8e361065a941f9a15b364ea0d5 (patch)
treec21be8ceffb031903b7fdf10bf1a54a468824823
parent73329a776acd58e39a2b0f7249048a833685ab4e (diff)
Merged revisions 208263 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r208263 | mmichelson | 2009-07-23 10:46:34 -0500 (Thu, 23 Jul 2009) | 15 lines Merged revisions 208262 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r208262 | mmichelson | 2009-07-23 10:43:07 -0500 (Thu, 23 Jul 2009) | 8 lines Properly handle 183 responses which do not contain an SDP. (closes issue #15442) Reported by: ffloimair Patches: 15442.patch uploaded by mmichelson (license 60) Tested by: tkarl, ffloimair ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.1@208265 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--channels/chan_sip.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 777b5db9c..b157a1310 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -16427,7 +16427,6 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru
case 183: /* Session progress */
if (!req->ignore && (p->invitestate != INV_CANCELLED) && sip_cancel_destroy(p))
ast_log(LOG_WARNING, "Unable to cancel SIP destruction. Expect bad things.\n");
- /* Ignore 183 Session progress without SDP */
if (find_sdp(req)) {
if (p->invitestate != INV_CANCELLED)
p->invitestate = INV_EARLY_MEDIA;
@@ -16436,6 +16435,18 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru
/* Queue a progress frame */
ast_queue_control(p->owner, AST_CONTROL_PROGRESS);
}
+ } else {
+ /* Alcatel PBXs are known to send 183s with no SDP after sending
+ * a 100 Trying response. We're just going to treat this sort of thing
+ * the same as we would treat a 180 Ringing
+ */
+ /*XXX I'm just following the same procedure for a 180 response, which
+ * doesn't change the invitestate of p. Shouldn't it be INV_PROCEEDING
+ * though?
+ */
+ if (!req->ignore && p->owner) {
+ ast_queue_control(p->owner, AST_CONTROL_RINGING);
+ }
}
check_pendings(p);
break;