aboutsummaryrefslogtreecommitdiffstats
path: root/cel
diff options
context:
space:
mode:
authorbbryant <bbryant@f38db490-d61c-443f-a65b-d21fe96a405b>2011-02-01 19:23:20 +0000
committerbbryant <bbryant@f38db490-d61c-443f-a65b-d21fe96a405b>2011-02-01 19:23:20 +0000
commit448eed4d19fcda1298e632a8444486802bb157d6 (patch)
tree3b44ae2ff87e25da2679b86f60df15cba4bc1304 /cel
parent414b4deaf6543d534785d87d70104aaaba0b3843 (diff)
Add a possible solution to a customer problem with reloading cel_pgsql.so
quickly. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.8@305603 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'cel')
-rw-r--r--cel/cel_pgsql.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/cel/cel_pgsql.c b/cel/cel_pgsql.c
index 32ec6302c..ca064ec22 100644
--- a/cel/cel_pgsql.c
+++ b/cel/cel_pgsql.c
@@ -337,31 +337,39 @@ static void pgsql_log(const struct ast_event *event, void *userdata)
static int my_unload_module(void)
{
struct columns *current;
+ AST_RWLIST_WRLOCK(&psql_columns);
if (event_sub) {
event_sub = ast_event_unsubscribe(event_sub);
+ event_sub = NULL;
}
if (conn) {
PQfinish(conn);
+ conn = NULL;
}
if (pghostname) {
ast_free(pghostname);
+ pghostname = NULL;
}
if (pgdbname) {
ast_free(pgdbname);
+ pgdbname = NULL;
}
if (pgdbuser) {
ast_free(pgdbuser);
+ pgdbuser = NULL;
}
if (pgpassword) {
ast_free(pgpassword);
+ pgpassword = NULL;
}
if (pgdbport) {
ast_free(pgdbport);
+ pgdbport = NULL;
}
if (table) {
ast_free(table);
+ table = NULL;
}
- AST_RWLIST_WRLOCK(&psql_columns);
while ((current = AST_RWLIST_REMOVE_HEAD(&psql_columns, list))) {
ast_free(current);
}