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;
/* 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;