From 3cecf5e67b1d0768a1eb63d2fa52dd3c992339ac Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Wed, 27 Feb 2013 12:02:42 +0000 Subject: Re #1592: Backported to 1.x git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.x@4394 74dad513-b988-da41-8d7b-12977e46ad98 --- pjlib/src/pj/timer.c | 3 ++- pjsip/src/pjsip/sip_transport_tcp.c | 2 ++ pjsip/src/pjsip/sip_transport_tls.c | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pjlib/src/pj/timer.c b/pjlib/src/pj/timer.c index 573c7ecb..a652d11e 100644 --- a/pjlib/src/pj/timer.c +++ b/pjlib/src/pj/timer.c @@ -497,15 +497,16 @@ PJ_DEF(unsigned) pj_timer_heap_poll( pj_timer_heap_t *ht, PJ_ASSERT_RETURN(ht, 0); + lock_timer_heap(ht); if (!ht->cur_size && next_delay) { next_delay->sec = next_delay->msec = PJ_MAXINT32; + unlock_timer_heap(ht); return 0; } count = 0; pj_gettickcount(&now); - lock_timer_heap(ht); while ( ht->cur_size && PJ_TIME_VAL_LTE(ht->heap[0]->_timer_value, now) && count < ht->max_entries_per_poll ) diff --git a/pjsip/src/pjsip/sip_transport_tcp.c b/pjsip/src/pjsip/sip_transport_tcp.c index 967d0670..a921e780 100644 --- a/pjsip/src/pjsip/sip_transport_tcp.c +++ b/pjsip/src/pjsip/sip_transport_tcp.c @@ -678,7 +678,9 @@ static void tcp_flush_pending_tx(struct tcp_transport *tcp) status = pj_activesock_send(tcp->asock, op_key, tdata->buf.start, &size, 0); if (status != PJ_EPENDING) { + pj_lock_release(tcp->base.lock); on_data_sent(tcp->asock, op_key, size); + pj_lock_acquire(tcp->base.lock); } } diff --git a/pjsip/src/pjsip/sip_transport_tls.c b/pjsip/src/pjsip/sip_transport_tls.c index f0e7081f..dc9ef3a7 100644 --- a/pjsip/src/pjsip/sip_transport_tls.c +++ b/pjsip/src/pjsip/sip_transport_tls.c @@ -677,7 +677,9 @@ static void tls_flush_pending_tx(struct tls_transport *tls) &size, 0); if (status != PJ_EPENDING) { + pj_lock_release(tls->base.lock); on_data_sent(tls->ssock, op_key, size); + pj_lock_acquire(tls->base.lock); } } pj_lock_release(tls->base.lock); -- cgit v1.2.3