]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Remove unnecessary usleep() from a couple of module unload callbacks.
authorRussell Bryant <russell@russellbryant.com>
Sat, 20 Jun 2009 14:09:40 +0000 (14:09 +0000)
committerRussell Bryant <russell@russellbryant.com>
Sat, 20 Jun 2009 14:09:40 +0000 (14:09 +0000)
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
cdr/cdr_pgsql.c
main/cdr.c

index 205c2075d906abe5aadf5dce9243068c28a698f3..1d319911450f698018b562f75529a336c69b0207 100644 (file)
@@ -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");
index 5e8e486730b9308e0142eaa08f2a8321b1cd349b..75fb0f854f3d05d957954654079296459d30dd71 100644 (file)
@@ -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)
index 3f7b9aee2f9effb1514653c83b9ada8e7ad1f27e..610c2ab3100f45778ef894d77b5d08ae3d4cfa6b 100644 (file)
@@ -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)