diff --git a/src/modules/Mysql/mysql.c b/src/modules/Mysql/mysql.c index 340ce890a1614e1849f117c3d419d632736a462d..7cb8cf534761e88bc249588cd4230ee6f110bdd8 100644 --- a/src/modules/Mysql/mysql.c +++ b/src/modules/Mysql/mysql.c @@ -1,5 +1,5 @@ /* - * $Id: mysql.c,v 1.6 1997/08/30 18:36:10 grubba Exp $ + * $Id: mysql.c,v 1.7 1997/11/02 16:04:42 grubba Exp $ * * SQL database functionality for Pike * @@ -73,7 +73,7 @@ typedef struct dynamic_buffer_s dynamic_buffer; * Globals */ -RCSID("$Id: mysql.c,v 1.6 1997/08/30 18:36:10 grubba Exp $"); +RCSID("$Id: mysql.c,v 1.7 1997/11/02 16:04:42 grubba Exp $"); struct program *mysql_program = NULL; @@ -151,6 +151,7 @@ static void pike_mysql_reconnect(void) } socket = PIKE_MYSQL->socket; + PIKE_MYSQL->socket = NULL; THREADS_ALLOW(); @@ -280,13 +281,14 @@ static void f_select_db(INT32 args) database = sp[-args].u.string->str; - THREADS_ALLOW(); - - tmp = mysql_select_db(socket, database); + if (socket) { + THREADS_ALLOW(); - THREADS_DISALLOW(); + tmp = mysql_select_db(socket, database); - if (tmp < 0) { + THREADS_DISALLOW(); + } + if (!socket || (tmp < 0)) { /* The connection might have been closed. */ pike_mysql_reconnect(); @@ -331,17 +333,18 @@ static void f_big_query(INT32 args) query = sp[-args].u.string->str; qlen = sp[-args].u.string->len; - THREADS_ALLOW(); + if (socket) { + THREADS_ALLOW(); #ifdef HAVE_MYSQL_REAL_QUERY - tmp = mysql_real_query(socket, query, qlen); + tmp = mysql_real_query(socket, query, qlen); #else - tmp = mysql_query(socket, query); + tmp = mysql_query(socket, query); #endif /* HAVE_MYSQL_REAL_QUERY */ - THREADS_DISALLOW(); - - if (tmp < 0) { + THREADS_DISALLOW(); + } + if (!socket || (tmp < 0)) { /* The connection might have been closed. */ pike_mysql_reconnect(); @@ -409,13 +412,14 @@ static void f_create_db(INT32 args) } database = sp[-args].u.string->str; - THREADS_ALLOW(); - - tmp = mysql_create_db(socket, database); + if (socket) { + THREADS_ALLOW(); - THREADS_DISALLOW(); + tmp = mysql_create_db(socket, database); - if (tmp < 0) { + THREADS_DISALLOW(); + } + if (!socket || (tmp < 0)) { /* The connection might have been closed */ pike_mysql_reconnect(); @@ -455,13 +459,14 @@ static void f_drop_db(INT32 args) } database = sp[-args].u.string->str; - THREADS_ALLOW(); - - tmp = mysql_drop_db(socket, database); + if (socket) { + THREADS_ALLOW(); - THREADS_DISALLOW(); + tmp = mysql_drop_db(socket, database); - if (tmp < 0) { + THREADS_DISALLOW(); + } + if (!socket || (tmp < 0)) { /* The connection might have been closed */ pike_mysql_reconnect(); @@ -488,13 +493,14 @@ static void f_shutdown(INT32 args) MYSQL *socket = PIKE_MYSQL->socket; int tmp; - THREADS_ALLOW(); + if (socket) { + THREADS_ALLOW(); - tmp = mysql_shutdown(socket); - - THREADS_DISALLOW(); + tmp = mysql_shutdown(socket); - if (tmp < 0) { + THREADS_DISALLOW(); + } + if (!socket || (tmp < 0)) { /* The connection might have been closed */ pike_mysql_reconnect(); @@ -520,13 +526,14 @@ static void f_reload(INT32 args) MYSQL *socket = PIKE_MYSQL->socket; int tmp; - THREADS_ALLOW(); - - tmp = mysql_reload(socket); + if (socket) { + THREADS_ALLOW(); - THREADS_DISALLOW(); + tmp = mysql_reload(socket); - if (tmp < 0) { + THREADS_DISALLOW(); + } + if (!socket || (tmp < 0)) { /* The connection might have been closed */ pike_mysql_reconnect(); @@ -617,13 +624,14 @@ static void f_list_dbs(INT32 args) wild = sp[-args].u.string->str; } - THREADS_ALLOW(); - - result = mysql_list_dbs(socket, wild); + if (socket) { + THREADS_ALLOW(); - THREADS_DISALLOW(); + result = mysql_list_dbs(socket, wild); - if (!result) { + THREADS_DISALLOW(); + } + if (!socket || !result) { /* The connection might have been closed */ pike_mysql_reconnect(); @@ -667,13 +675,14 @@ static void f_list_tables(INT32 args) wild = sp[-args].u.string->str; } - THREADS_ALLOW(); - - result = mysql_list_tables(socket, wild); + if (socket) { + THREADS_ALLOW(); - THREADS_DISALLOW(); + result = mysql_list_tables(socket, wild); - if (!result) { + THREADS_DISALLOW(); + } + if (!socket || !result) { /* The connection might have been closed */ pike_mysql_reconnect(); @@ -733,13 +742,14 @@ static void f_list_fields(INT32 args) wild = sp[-args+1].u.string->str; } - THREADS_ALLOW(); - - result = mysql_list_fields(socket, table, wild); + if (socket) { + THREADS_ALLOW(); - THREADS_DISALLOW(); + result = mysql_list_fields(socket, table, wild); - if (!result) { + THREADS_DISALLOW(); + } + if (!socket || !result) { /* The connection might have been closed */ pike_mysql_reconnect(); @@ -774,13 +784,14 @@ static void f_list_processes(INT32 args) pop_n_elems(args); - THREADS_ALLOW(); - - result = mysql_list_processes(socket); + if (socket) { + THREADS_ALLOW(); - THREADS_DISALLOW(); + result = mysql_list_processes(socket); - if (!result) { + THREADS_DISALLOW(); + } + if (!socket || !result) { /* The connection might have been closed */ pike_mysql_reconnect();