--- chan_sip.c (版本 1498) +++ chan_sip.c (版本 1499) @@ -2130,7 +2130,7 @@ msg = sip_methods[sipmethod].text; - ast_mutex_lock(&p->lock); + //ast_mutex_lock(&p->lock); //libing remove lock for (cur = p->packets; cur; prev = cur, cur = cur->next) { if ((cur->seqno == seqno) && ((ast_test_flag(cur, FLAG_RESPONSE)) == resp) && ((ast_test_flag(cur, FLAG_RESPONSE)) || @@ -2153,7 +2153,7 @@ break; } } - ast_mutex_unlock(&p->lock); + //ast_mutex_unlock(&p->lock); if (option_debug) ast_log(LOG_DEBUG, "Stopping retransmission on '%s' of %s %d: Match %s\n", p->callid, resp ? "Response" : "Request", seqno, res ? "Not Found" : "Found"); } @@ -2172,7 +2172,9 @@ } cur = p->packets; method = (cur->method) ? cur->method : find_sip_method(cur->data); + ast_mutex_lock(&p->lock); //libing lock __sip_ack(p, cur->seqno, ast_test_flag(cur, FLAG_RESPONSE), method); + ast_mutex_unlock(&p->lock); } }