aboutsummaryrefslogtreecommitdiffstats
path: root/channels
diff options
context:
space:
mode:
authorfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-10-10 14:30:05 +0000
committerfile <file@f38db490-d61c-443f-a65b-d21fe96a405b>2007-10-10 14:30:05 +0000
commit25d97161b6d7a0dd0063f2a0a588c6aed622d1ec (patch)
tree8ff8420ba2dad6c33f9fcc06c923a4e32ff64a5b /channels
parentbffe2cb9b5eb633c2a6460310e81caf400d6be61 (diff)
Merged revisions 85277 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r85277 | file | 2007-10-10 11:28:18 -0300 (Wed, 10 Oct 2007) | 6 lines Add support for handling a 182 Queued response. (closes issue #10924) Reported by: ramonpeek Patches: queued-182.diff uploaded by ramonpeek (license 266) ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@85278 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 5f613ef31..040f00898 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -13100,7 +13100,7 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru
/* RFC3261 says we must treat every 1xx response (but not 100)
that we don't recognize as if it was 183.
*/
- if (resp > 100 && resp < 200 && resp!=101 && resp != 180 && resp != 183)
+ if (resp > 100 && resp < 200 && resp!=101 && resp != 180 && resp != 182 && resp != 183)
resp = 183;
/* Any response between 100 and 199 is PROCEEDING */
@@ -13121,6 +13121,7 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru
break;
case 180: /* 180 Ringing */
+ case 182: /* 182 Queued */
if (!req->ignore)
sip_cancel_destroy(p);
if (!req->ignore && p->owner) {
@@ -13133,7 +13134,7 @@ static void handle_response_invite(struct sip_pvt *p, int resp, char *rest, stru
p->invitestate = INV_EARLY_MEDIA;
res = process_sdp(p, req);
if (!req->ignore && p->owner) {
- /* Queue a progress frame only if we have SDP in 180 */
+ /* Queue a progress frame only if we have SDP in 180 or 182 */
ast_queue_control(p->owner, AST_CONTROL_PROGRESS);
}
}
@@ -13686,6 +13687,10 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
if (sipmethod == SIP_INVITE)
handle_response_invite(p, resp, rest, req, seqno);
break;
+ case 182: /* 182 Queued */
+ if (sipmethod == SIP_INVITE)
+ handle_response_invite(p, resp, rest, req, seqno);
+ break;
case 200: /* 200 OK */
p->authtries = 0; /* Reset authentication counter */
if (sipmethod == SIP_MESSAGE || sipmethod == SIP_INFO) {