mirror of
https://github.com/coturn/coturn.git
synced 2025-10-24 12:31:00 +02:00
Merge pull request #367 from shu-mutou/disconnect-db
Disconnect database gracefully
This commit is contained in:
commit
dfa95e6af5
@ -1351,6 +1351,15 @@ static int mongo_list_admin_users(int no_print)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mongo_disconnect(void) {
|
||||||
|
MONGO * mongoconnection = (MONGO *) pthread_getspecific(connection_key);
|
||||||
|
if (mongoconnection) {
|
||||||
|
MongoFree(mongoconnection);
|
||||||
|
mongoconnection = NULL;
|
||||||
|
}
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "MongoDB connection was closed.\n");
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////
|
||||||
|
|
||||||
static const turn_dbdriver_t driver = {
|
static const turn_dbdriver_t driver = {
|
||||||
@ -1378,7 +1387,8 @@ static const turn_dbdriver_t driver = {
|
|||||||
&mongo_get_admin_user,
|
&mongo_get_admin_user,
|
||||||
&mongo_set_admin_user,
|
&mongo_set_admin_user,
|
||||||
&mongo_del_admin_user,
|
&mongo_del_admin_user,
|
||||||
&mongo_list_admin_users
|
&mongo_list_admin_users,
|
||||||
|
&mongo_disconnect
|
||||||
};
|
};
|
||||||
|
|
||||||
const turn_dbdriver_t * get_mongo_dbdriver(void) {
|
const turn_dbdriver_t * get_mongo_dbdriver(void) {
|
||||||
|
|||||||
@ -1261,6 +1261,15 @@ static int mysql_list_admin_users(int no_print)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void mysql_disconnect(void) {
|
||||||
|
MYSQL *mydbconnection = (MYSQL*)pthread_getspecific(connection_key);
|
||||||
|
if (mydbconnection) {
|
||||||
|
mysql_close(mydbconnection);
|
||||||
|
mydbconnection=NULL;
|
||||||
|
}
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "MySQL connection was closed.\n");
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////
|
||||||
|
|
||||||
static const turn_dbdriver_t driver = {
|
static const turn_dbdriver_t driver = {
|
||||||
@ -1288,7 +1297,8 @@ static const turn_dbdriver_t driver = {
|
|||||||
&mysql_get_admin_user,
|
&mysql_get_admin_user,
|
||||||
&mysql_set_admin_user,
|
&mysql_set_admin_user,
|
||||||
&mysql_del_admin_user,
|
&mysql_del_admin_user,
|
||||||
&mysql_list_admin_users
|
&mysql_list_admin_users,
|
||||||
|
&mysql_disconnect
|
||||||
};
|
};
|
||||||
|
|
||||||
const turn_dbdriver_t * get_mysql_dbdriver(void) {
|
const turn_dbdriver_t * get_mysql_dbdriver(void) {
|
||||||
|
|||||||
@ -949,6 +949,15 @@ static int pgsql_list_admin_users(int no_print)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void pgsql_disconnect(void) {
|
||||||
|
PGconn *pqdbconnection = (PGconn*)pthread_getspecific(connection_key);
|
||||||
|
if (pqdbconnection) {
|
||||||
|
PQfinish(pqdbconnection);
|
||||||
|
pqdbconnection=NULL;
|
||||||
|
}
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "PostgreSQL connection was closed.\n");
|
||||||
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
static const turn_dbdriver_t driver = {
|
static const turn_dbdriver_t driver = {
|
||||||
@ -976,7 +985,8 @@ static const turn_dbdriver_t driver = {
|
|||||||
&pgsql_get_admin_user,
|
&pgsql_get_admin_user,
|
||||||
&pgsql_set_admin_user,
|
&pgsql_set_admin_user,
|
||||||
&pgsql_del_admin_user,
|
&pgsql_del_admin_user,
|
||||||
&pgsql_list_admin_users
|
&pgsql_list_admin_users,
|
||||||
|
&pgsql_disconnect
|
||||||
};
|
};
|
||||||
|
|
||||||
const turn_dbdriver_t * get_pgsql_dbdriver(void) {
|
const turn_dbdriver_t * get_pgsql_dbdriver(void) {
|
||||||
|
|||||||
@ -1347,6 +1347,15 @@ static int redis_list_admin_users(int no_print)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void redis_disconnect(void) {
|
||||||
|
redisContext *redisconnection = (redisContext*)pthread_getspecific(connection_key);
|
||||||
|
if (redisconnection) {
|
||||||
|
redisFree(redisconnection);
|
||||||
|
redisconnection = NULL;
|
||||||
|
}
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "Redis connection was closed.\n");
|
||||||
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////
|
||||||
|
|
||||||
static const turn_dbdriver_t driver = {
|
static const turn_dbdriver_t driver = {
|
||||||
@ -1374,7 +1383,8 @@ static const turn_dbdriver_t driver = {
|
|||||||
&redis_get_admin_user,
|
&redis_get_admin_user,
|
||||||
&redis_set_admin_user,
|
&redis_set_admin_user,
|
||||||
&redis_del_admin_user,
|
&redis_del_admin_user,
|
||||||
&redis_list_admin_users
|
&redis_list_admin_users,
|
||||||
|
&redis_disconnect
|
||||||
};
|
};
|
||||||
|
|
||||||
const turn_dbdriver_t * get_redis_dbdriver(void) {
|
const turn_dbdriver_t * get_redis_dbdriver(void) {
|
||||||
|
|||||||
@ -1294,6 +1294,15 @@ static int sqlite_list_admin_users(int no_print)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void *sqlite_disconnect(void) {
|
||||||
|
sqlite3 *sqliteconnection = (sqlite3 *)pthread_getspecific(connection_key);
|
||||||
|
if (sqliteconnection) {
|
||||||
|
sqlite3_close(sqliteconnection);
|
||||||
|
sqliteconnection=NULL;
|
||||||
|
}
|
||||||
|
TURN_LOG_FUNC(TURN_LOG_LEVEL_INFO, "SQLite connection was closed.\n");
|
||||||
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////
|
||||||
|
|
||||||
static const turn_dbdriver_t driver = {
|
static const turn_dbdriver_t driver = {
|
||||||
@ -1321,7 +1330,8 @@ static const turn_dbdriver_t driver = {
|
|||||||
&sqlite_get_admin_user,
|
&sqlite_get_admin_user,
|
||||||
&sqlite_set_admin_user,
|
&sqlite_set_admin_user,
|
||||||
&sqlite_del_admin_user,
|
&sqlite_del_admin_user,
|
||||||
&sqlite_list_admin_users
|
&sqlite_list_admin_users,
|
||||||
|
&sqlite_disconnect
|
||||||
};
|
};
|
||||||
|
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|||||||
@ -73,6 +73,7 @@ typedef struct _turn_dbdriver_t {
|
|||||||
int (*set_admin_user)(const uint8_t *usname, const uint8_t *realm, const password_t pwd);
|
int (*set_admin_user)(const uint8_t *usname, const uint8_t *realm, const password_t pwd);
|
||||||
int (*del_admin_user)(const uint8_t *usname);
|
int (*del_admin_user)(const uint8_t *usname);
|
||||||
int (*list_admin_users)(int no_print);
|
int (*list_admin_users)(int no_print);
|
||||||
|
void (*disconnect)(void);
|
||||||
} turn_dbdriver_t;
|
} turn_dbdriver_t;
|
||||||
|
|
||||||
/////////// USER DB CHECK //////////////////
|
/////////// USER DB CHECK //////////////////
|
||||||
|
|||||||
@ -29,6 +29,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "mainrelay.h"
|
#include "mainrelay.h"
|
||||||
|
#include "dbdrivers/dbdriver.h"
|
||||||
|
|
||||||
#if (defined LIBRESSL_VERSION_NUMBER && OPENSSL_VERSION_NUMBER == 0x20000000L)
|
#if (defined LIBRESSL_VERSION_NUMBER && OPENSSL_VERSION_NUMBER == 0x20000000L)
|
||||||
#undef OPENSSL_VERSION_NUMBER
|
#undef OPENSSL_VERSION_NUMBER
|
||||||
@ -1690,6 +1691,15 @@ static void read_config_file(int argc, char **argv, int pass)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int disconnect_database(void)
|
||||||
|
{
|
||||||
|
const turn_dbdriver_t * dbd = get_dbdriver();
|
||||||
|
if (dbd && dbd->disconnect) {
|
||||||
|
dbd->disconnect();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int adminmain(int argc, char **argv)
|
static int adminmain(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int c = 0;
|
int c = 0;
|
||||||
@ -1914,7 +1924,11 @@ static int adminmain(int argc, char **argv)
|
|||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return adminuser(user, realm, pwd, secret, origin, ct, &po, is_admin);
|
int result = adminuser(user, realm, pwd, secret, origin, ct, &po, is_admin);
|
||||||
|
|
||||||
|
disconnect_database();
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_features(unsigned long mfn)
|
static void print_features(unsigned long mfn)
|
||||||
@ -2421,6 +2435,8 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
run_listener_server(&(turn_params.listener));
|
run_listener_server(&(turn_params.listener));
|
||||||
|
|
||||||
|
disconnect_database();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user