diff --git a/pjlib-util/src/pjlib-util/resolver.c b/pjlib-util/src/pjlib-util/resolver.c index 0fd0cf7ef..1ec8daace 100644 --- a/pjlib-util/src/pjlib-util/resolver.c +++ b/pjlib-util/src/pjlib-util/resolver.c @@ -1840,15 +1840,15 @@ PJ_DEF(pj_status_t) pj_dns_resolver_add_entry( pj_dns_resolver *resolver, pj_bzero(&key, sizeof(struct res_key)); if (pkt->hdr.anscount) { /* Make sure name is not too long. */ - PJ_ASSERT_RETURN(pkt->ans[0].name.slen < PJ_MAX_HOSTNAME, - PJ_ENAMETOOLONG); + PJ_ASSERT_ON_FAIL(pkt->ans[0].name.slen < PJ_MAX_HOSTNAME, + { pj_grp_lock_release(resolver->grp_lock); return PJ_ENAMETOOLONG; }); init_res_key(&key, pkt->ans[0].type, &pkt->ans[0].name); } else { /* Make sure name is not too long. */ - PJ_ASSERT_RETURN(pkt->q[0].name.slen < PJ_MAX_HOSTNAME, - PJ_ENAMETOOLONG); + PJ_ASSERT_ON_FAIL(pkt->q[0].name.slen < PJ_MAX_HOSTNAME, + { pj_grp_lock_release(resolver->grp_lock); return PJ_ENAMETOOLONG; }); init_res_key(&key, pkt->q[0].type, &pkt->q[0].name); } diff --git a/pjlib/src/pj/ioqueue_winnt.c b/pjlib/src/pj/ioqueue_winnt.c index d2a45dbcc..11b6573bc 100644 --- a/pjlib/src/pj/ioqueue_winnt.c +++ b/pjlib/src/pj/ioqueue_winnt.c @@ -495,6 +495,7 @@ PJ_DEF(pj_status_t) pj_ioqueue_destroy( pj_ioqueue_t *ioqueue ) } #endif + pj_lock_release(ioqueue->lock); if (ioqueue->auto_delete_lock) pj_lock_destroy(ioqueue->lock); diff --git a/pjlib/src/pj/pool_caching.c b/pjlib/src/pj/pool_caching.c index 666ab1473..e917d1f29 100644 --- a/pjlib/src/pj/pool_caching.c +++ b/pjlib/src/pj/pool_caching.c @@ -220,6 +220,7 @@ static void cpool_release_pool( pj_pool_factory *pf, pj_pool_t *pool) #if PJ_SAFE_POOL /* Make sure pool is still in our used list */ if (pj_list_find_node(&cp->used_list, pool) != pool) { + pj_lock_release(cp->lock); pj_assert(!"Attempt to destroy pool that has been destroyed before"); return; } diff --git a/pjnath/src/pjnath/turn_session.c b/pjnath/src/pjnath/turn_session.c index 1ed0a4056..e85e971f8 100644 --- a/pjnath/src/pjnath/turn_session.c +++ b/pjnath/src/pjnath/turn_session.c @@ -664,7 +664,9 @@ PJ_DEF(pj_status_t) pj_turn_session_set_server( pj_turn_session *sess, unsigned i, cnt; /* Default port must be specified */ - PJ_ASSERT_RETURN(default_port>0 && default_port<65536, PJ_EINVAL); + PJ_ASSERT_ON_FAIL(default_port>0 && default_port<65536, + {status=PJ_EINVAL; goto on_return;}); + sess->default_port = (pj_uint16_t)default_port; cnt = PJ_TURN_MAX_DNS_SRV_CNT; diff --git a/pjsip/src/pjsip/sip_transport.c b/pjsip/src/pjsip/sip_transport.c index 706250d7e..3b30046fe 100644 --- a/pjsip/src/pjsip/sip_transport.c +++ b/pjsip/src/pjsip/sip_transport.c @@ -1283,8 +1283,10 @@ PJ_DEF(pj_status_t) pjsip_transport_register( pjsip_tpmgr *mgr, /* Allocate new entry for the freelist. */ for (; i < PJSIP_TRANSPORT_ENTRY_ALLOC_CNT; ++i) { tp_add = PJ_POOL_ZALLOC_T(mgr->pool, transport); - if (!tp_add) + if (!tp_add){ + pj_lock_release(mgr->lock); return PJ_ENOMEM; + } pj_list_init(tp_add); pj_list_push_back(&mgr->tp_entry_freelist, tp_add); }