From b390327dd792d942629394a731107854bd18d526 Mon Sep 17 00:00:00 2001 From: Russell Bryant <russell@russellbryant.com> Date: Sat, 20 Jun 2009 14:09:40 +0000 Subject: [PATCH] Remove unnecessary usleep() from a couple of module unload callbacks. In passing, also tweak cdr_unregister() to hold the list lock a bit less time. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@202109 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- cdr/cdr_adaptive_odbc.c | 1 - cdr/cdr_pgsql.c | 3 +-- main/cdr.c | 7 +++++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cdr/cdr_adaptive_odbc.c b/cdr/cdr_adaptive_odbc.c index 205c2075d9..1d31991145 100644 --- a/cdr/cdr_adaptive_odbc.c +++ b/cdr/cdr_adaptive_odbc.c @@ -663,7 +663,6 @@ early_release: static int unload_module(void) { ast_cdr_unregister(name); - usleep(1); if (AST_RWLIST_WRLOCK(&odbc_tables)) { ast_cdr_register(name, ast_module_info->description, odbc_log); ast_log(LOG_ERROR, "Unable to lock column list. Unload failed.\n"); diff --git a/cdr/cdr_pgsql.c b/cdr/cdr_pgsql.c index 5e8e486730..75fb0f854f 100644 --- a/cdr/cdr_pgsql.c +++ b/cdr/cdr_pgsql.c @@ -331,10 +331,9 @@ static int pgsql_log(struct ast_cdr *cdr) static int unload_module(void) { struct columns *current; + ast_cdr_unregister(name); - /* Give all threads time to finish */ - usleep(1); PQfinish(conn); if (pghostname) diff --git a/main/cdr.c b/main/cdr.c index 3f7b9aee2f..610c2ab310 100644 --- a/main/cdr.c +++ b/main/cdr.c @@ -148,13 +148,16 @@ void ast_cdr_unregister(const char *name) AST_RWLIST_TRAVERSE_SAFE_BEGIN(&be_list, i, list) { if (!strcasecmp(name, i->name)) { AST_RWLIST_REMOVE_CURRENT(list); - ast_verb(2, "Unregistered '%s' CDR backend\n", name); - ast_free(i); break; } } AST_RWLIST_TRAVERSE_SAFE_END; AST_RWLIST_UNLOCK(&be_list); + + if (i) { + ast_verb(2, "Unregistered '%s' CDR backend\n", name); + ast_free(i); + } } int ast_cdr_isset_unanswered(void) -- GitLab