summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index 371abb76..f61f26f8 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -424,9 +424,13 @@ static pj_bool_t mod_inv_on_rx_request(pjsip_rx_data *rdata)
inv->invite_tsx->state <= PJSIP_TSX_STATE_COMPLETED)
{
/* Before we terminate INVITE transaction, process the SDP
- * in the ACK request, if any.
+ * in the ACK request, if any.
+ * Only do this when invite state is not already disconnected
+ * (http://trac.pjsip.org/repos/ticket/640).
*/
- inv_check_sdp_in_incoming_msg(inv, inv->invite_tsx, rdata);
+ if (inv->state < PJSIP_INV_STATE_DISCONNECTED) {
+ inv_check_sdp_in_incoming_msg(inv, inv->invite_tsx, rdata);
+ }
/* Now we can terminate the INVITE transaction */
pj_assert(inv->invite_tsx->status_code >= 200);