ast_queue_hangup(pkt->owner->owner, 1);
} else {
/* If no owner, destroy now */
- ast_mutex_unlock(&pkt->owner->lock);
- sip_destroy(pkt->owner);
- pkt = NULL;
+ pkt->owner->needdestroy = 1;
}
}
} else {
ast_queue_hangup(pkt->owner->owner, 1);
} else {
/* If no owner, destroy now */
- ast_mutex_unlock(&pkt->owner->lock);
- sip_destroy(pkt->owner);
- pkt=NULL;
+ pkt->owner->needdestroy = 1;
}
}
if (pkt)
/* No way to authenticate */
return -1;
}
- return transmit_invite(p,"INVITE",1,digest, NULL,NULL);
+ return transmit_invite(p,msg,!strcasecmp(msg, "INVITE"),digest, NULL,NULL);
}
static int reply_digest(struct sip_pvt *p, struct sip_request *req, char *header, char *orig_header, char *digest, int digest_len) {