/* 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 */
break;
case 180: /* 180 Ringing */
+ case 182: /* 182 Queued */
if (!req->ignore)
sip_cancel_destroy(p);
if (!req->ignore && p->owner) {
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);
}
}
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) {