From fb77808be64ec6ac4e7896bac5542fdb88b09a1c Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Thu, 6 Aug 2015 06:28:51 +0000 Subject: Fixed #1875: Assertion in rescheduling PJSIP retransmission git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5147 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsip/sip_transaction.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'pjsip/src') diff --git a/pjsip/src/pjsip/sip_transaction.c b/pjsip/src/pjsip/sip_transaction.c index 0174fa53..ccd3af61 100644 --- a/pjsip/src/pjsip/sip_transaction.c +++ b/pjsip/src/pjsip/sip_transaction.c @@ -1848,8 +1848,14 @@ static void send_msg_callback( pjsip_send_state *send_state, tsx_send_msg(tsx, tsx->last_tx); } - /* Need to reschedule retransmission? */ - if (tsx->transport_flag & TSX_HAS_PENDING_RESCHED) { + /* Need to reschedule retransmission? + * Note that when sending a pending message above, tsx_send_msg() + * may set the flag TSX_HAS_PENDING_TRANSPORT. + * Please refer to ticket #1875. + */ + if (tsx->transport_flag & TSX_HAS_PENDING_RESCHED && + !(tsx->transport_flag & TSX_HAS_PENDING_TRANSPORT)) + { tsx->transport_flag &= ~(TSX_HAS_PENDING_RESCHED); /* Only update when transport turns out to be unreliable. */ -- cgit v1.2.3