summaryrefslogtreecommitdiff
path: root/pjsip
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2010-02-10 08:48:27 +0000
committerBenny Prijono <bennylp@teluu.com>2010-02-10 08:48:27 +0000
commitb144802c32088741a340a85101e734dc4603995a (patch)
tree3c284c31c9508bc48a688832fa39577b550cc55b /pjsip
parentf8cb86dcf00cf846c0a9eec083250b46cf3dd94e (diff)
Fixed ticket #1011: "Invalid operation step" assertion when TCP is used
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3094 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip')
-rw-r--r--pjsip/src/pjsip-ua/sip_inv.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/pjsip/src/pjsip-ua/sip_inv.c b/pjsip/src/pjsip-ua/sip_inv.c
index 3afdeb68..eb2c20f3 100644
--- a/pjsip/src/pjsip-ua/sip_inv.c
+++ b/pjsip/src/pjsip-ua/sip_inv.c
@@ -351,9 +351,12 @@ static pj_status_t inv_send_ack(pjsip_inv_session *inv, pjsip_event *e)
PJ_LOG(5,(inv->obj_name, "Received %s, sending ACK",
pjsip_rx_data_get_info(rdata)));
- /* Check if we have cached ACK request */
- if (inv->last_ack && rdata->msg_info.cseq->cseq == inv->last_ack_cseq) {
-
+ /* Check if we have cached ACK request. Must not use the cached ACK
+ * if it's still marked as pending by transport (#1011)
+ */
+ if (inv->last_ack && rdata->msg_info.cseq->cseq == inv->last_ack_cseq &&
+ !inv->last_ack->is_pending)
+ {
pjsip_tx_data_add_ref(inv->last_ack);
} else if (mod_inv.cb.on_send_ack) {