From: Richard Mudgett Date: Mon, 31 Jan 2011 23:45:58 +0000 (+0000) Subject: Obtain the pri lock for PRI queue counters. X-Git-Tag: 1.4.41-rc1~19 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=46d7f5d734aed18b82550d8df7261798e9526d78;p=thirdparty%2Fasterisk.git Obtain the pri lock for PRI queue counters. Need to obtain the pri lock when calling pri_dump_info_str() to avoid a reentrancy problem when calculating the Q.921 Q count statistic. JIRA AST-484 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@305341 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index 6fb4da3b2e..a1869dafd2 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -10871,6 +10871,7 @@ static int handle_pri_show_span(int fd, int argc, char *argv[]) ast_cli(fd, "%s D-channel: %d\n", pri_order(x), pris[span-1].dchannels[x]); build_status(status, sizeof(status), pris[span-1].dchanavail[x], pris[span-1].dchans[x] == pris[span-1].pri); ast_cli(fd, "Status: %s\n", status); + ast_mutex_lock(&pris[span - 1].lock); #ifdef PRI_DUMP_INFO_STR info_str = pri_dump_info_str(pris[span-1].pri); if (info_str) { @@ -10880,6 +10881,7 @@ static int handle_pri_show_span(int fd, int argc, char *argv[]) #else pri_dump_info(pris[span-1].pri); #endif + ast_mutex_unlock(&pris[span - 1].lock); ast_cli(fd, "Overlap Recv: %s\n\n", (pris[span-1].overlapdial & DAHDI_OVERLAPDIAL_INCOMING)?"Yes":"No"); } }