diff --git a/frame.c b/frame.c index ac1c72e05ca3bcb64479864755c269039c6d462b..4f0cb08bde4490a06cf9884465288bf74c23379d 100644 --- a/frame.c +++ b/frame.c @@ -255,9 +255,9 @@ static struct ast_frame *ast_frame_header_new(void) struct ast_frame *f = ast_calloc(1, sizeof(*f)); #ifdef TRACE_FRAMES if (f) { - headers++; f->prev = NULL; ast_mutex_lock(&framelock); + headers++; f->next = headerlist; if (headerlist) headerlist->prev = f; @@ -284,8 +284,8 @@ void ast_frfree(struct ast_frame *fr) } if (fr->mallocd & AST_MALLOCD_HDR) { #ifdef TRACE_FRAMES - headers--; ast_mutex_lock(&framelock); + headers--; if (fr->next) fr->next->prev = fr->prev; if (fr->prev) @@ -860,11 +860,11 @@ static int show_frame_stats(int fd, int argc, char *argv[]) int x=1; if (argc != 3) return RESULT_SHOWUSAGE; + ast_mutex_lock(&framelock); ast_cli(fd, " Framer Statistics \n"); ast_cli(fd, "---------------------------\n"); ast_cli(fd, "Total allocated headers: %d\n", headers); ast_cli(fd, "Queue Dump:\n"); - ast_mutex_lock(&framelock); for (f=headerlist; f; f = f->next) { ast_cli(fd, "%d. Type %d, subclass %d from %s\n", x++, f->frametype, f->subclass, f->src ? f->src : "<Unknown>"); }