ast_mutex_unlock(&iflock);
/* Responses can not create a pvt structure so drop it */
- if (req->method == SIP_RESPONSE)
+ if (req->method == SIP_RESPONSE) {
+ if (option_debug > 1)
+ ast_log(LOG_DEBUG, "That's odd... Got a response on a call we dont know about. Callid %s\n", callid ? callid : "<unknown>");
return NULL;
+ }
/* Allocate new call */
if ((p = sip_alloc(callid, sin, 1, intended_method)))
/* Find out SIP method for incoming request */
if (req->method == SIP_RESPONSE) { /* Response to our request */
+ /* When we get here, we know this is a SIP dialog where we've sent
+ a request and have a response, or at least get a response
+ within an existing dialog */
/* Response to our request -- Do some sanity checks */
- if (!p->initreq.headers) {
- if (option_debug)
- ast_log(LOG_DEBUG, "That's odd... Got a response on a call we dont know about. Cseq %d Cmd %s\n", seqno, cmd);
- ast_set_flag(&p->flags[0], SIP_NEEDDESTROY);
- return 0;
- } else if (p->ocseq && (p->ocseq < seqno)) {
+ if (p->ocseq && (p->ocseq < seqno)) {
if (option_debug)
ast_log(LOG_DEBUG, "Ignoring out of order response %d (expecting %d)\n", seqno, p->ocseq);
return -1;