diff options
author | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-10-10 14:30:05 +0000 |
---|---|---|
committer | file <file@f38db490-d61c-443f-a65b-d21fe96a405b> | 2007-10-10 14:30:05 +0000 |
commit | 25d97161b6d7a0dd0063f2a0a588c6aed622d1ec (patch) | |
tree | 8ff8420ba2dad6c33f9fcc06c923a4e32ff64a5b | |
parent | bffe2cb9b5eb633c2a6460310e81caf400d6be61 (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
-rw-r--r-- | channels/chan_sip.c | 9 |
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) { |