diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-08-11 00:27:46 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-08-11 00:27:46 +0000 |
commit | 1806ac6dbcf7924975bf8911118f9249fd21aa6c (patch) | |
tree | 92ee534779073da630ecf8007cc609a6fc69eba1 /res | |
parent | 8da4ac5318faa49682efb06b4e9726baddf98090 (diff) |
Merged revisions 137150 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r137150 | tilghman | 2008-08-10 19:25:28 -0500 (Sun, 10 Aug 2008) | 13 lines
Merged revisions 137138 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r137138 | tilghman | 2008-08-10 19:20:38 -0500 (Sun, 10 Aug 2008) | 5 lines
Deallocate database connection handle on disconnect, as we allocate another
one on connect.
(closes issue #13271)
Reported by: dveiga
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@137160 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'res')
-rw-r--r-- | res/res_odbc.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/res/res_odbc.c b/res/res_odbc.c index 3e0a205ee..070d0eb6a 100644 --- a/res/res_odbc.c +++ b/res/res_odbc.c @@ -533,16 +533,27 @@ struct odbc_obj *ast_odbc_request_obj(const char *name, int check) static odbc_status odbc_obj_disconnect(struct odbc_obj *obj) { int res; + SQLINTEGER err; + short int mlen; + unsigned char msg[200], stat[10]; + ast_mutex_lock(&obj->lock); res = SQLDisconnect(obj->con); if (res == ODBC_SUCCESS) { - ast_log(LOG_WARNING, "res_odbc: disconnected %d from %s [%s]\n", res, obj->parent->name, obj->parent->dsn); + ast_log(LOG_DEBUG, "Disconnected %d from %s [%s]\n", res, obj->parent->name, obj->parent->dsn); } else { - ast_log(LOG_WARNING, "res_odbc: %s [%s] already disconnected\n", - obj->parent->name, obj->parent->dsn); + ast_log(LOG_DEBUG, "res_odbc: %s [%s] already disconnected\n", obj->parent->name, obj->parent->dsn); } + + if ((res = SQLFreeHandle(SQL_HANDLE_DBC, obj->con) == ODBC_SUCCESS)) { + ast_log(LOG_DEBUG, "Database handle deallocated\n"); + } else { + SQLGetDiagRec(SQL_HANDLE_DBC, obj->con, 1, stat, &err, msg, 100, &mlen); + ast_log(LOG_WARNING, "Unable to deallocate database handle? %d errno=%d %s\n", res, (int)err, msg); + } + obj->up = 0; ast_mutex_unlock(&obj->lock); return ODBC_SUCCESS; |