From: Alan T. DeKok Date: Tue, 9 Mar 2010 09:12:01 +0000 (+0100) Subject: Check for closed sockets. X-Git-Tag: release_2_1_9~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5103cef4eb0dd613f02bb15a8eed5b0b76d28be9;p=thirdparty%2Ffreeradius-server.git Check for closed sockets. This allows the module to continue if the DB suddenly disappears --- diff --git a/src/modules/rlm_sql/sql.c b/src/modules/rlm_sql/sql.c index e5e15bc0085..ecd77e0638d 100644 --- a/src/modules/rlm_sql/sql.c +++ b/src/modules/rlm_sql/sql.c @@ -511,7 +511,11 @@ int rlm_sql_query(SQLSOCK *sqlsocket, SQL_INST *inst, char *query) return -1; } - ret = (inst->module->sql_query)(sqlsocket, inst->config, query); + if (sqlsocket->conn) { + ret = (inst->module->sql_query)(sqlsocket, inst->config, query); + } else { + ret = SQL_DOWN; + } if (ret == SQL_DOWN) { /* close the socket that failed */ @@ -556,7 +560,12 @@ int rlm_sql_select_query(SQLSOCK *sqlsocket, SQL_INST *inst, char *query) return -1; } - ret = (inst->module->sql_select_query)(sqlsocket, inst->config, query); + if (sqlsocket->conn) { + ret = (inst->module->sql_select_query)(sqlsocket, inst->config, + query); + } else { + ret = SQL_DOWN; + } if (ret == SQL_DOWN) { /* close the socket that failed */ @@ -596,13 +605,6 @@ int sql_getvpdata(SQL_INST * inst, SQLSOCK * sqlsocket, VALUE_PAIR **pair, char SQL_ROW row; int rows = 0; - /* - * If there's no query, return an error. - */ - if (!query || !*query) { - return -1; - } - if (rlm_sql_select_query(sqlsocket, inst, query)) { radlog(L_ERR, "rlm_sql_getvpdata: database query error"); return -1;