From: Alan T. DeKok Date: Tue, 10 May 2011 08:45:54 +0000 (+0200) Subject: If accounting start/interim/stop doesn't do anything, return NOOP X-Git-Tag: release_2_1_11~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6ed9727;p=thirdparty%2Ffreeradius-server.git If accounting start/interim/stop doesn't do anything, return NOOP If num_affected_rows == 0, return NOOP --- diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index 6c7200132cd..8a1b3304bbe 100644 --- a/src/modules/rlm_sql/rlm_sql.c +++ b/src/modules/rlm_sql/rlm_sql.c @@ -1226,6 +1226,10 @@ static int rlm_sql_accounting(void *instance, REQUEST * request) { (inst->module->sql_error)(sqlsocket, inst->config)); ret = RLM_MODULE_FAIL; } + /* + * If no one is online, num_affected_rows + * will be zero, which is OK. + */ (inst->module->sql_finish_query)(sqlsocket, inst->config); } @@ -1270,8 +1274,12 @@ static int rlm_sql_accounting(void *instance, REQUEST * request) { radlog_request(L_ERR, 0, request, "Couldn't insert SQL accounting ALIVE record - %s", (inst->module->sql_error)(sqlsocket, inst->config)); ret = RLM_MODULE_FAIL; + } else { + numaffected = (inst->module->sql_affected_rows)(sqlsocket, inst->config); + if (numaffected < 1) { + ret = RLM_MODULE_NOOP; + } } - (inst->module->sql_finish_query)(sqlsocket, inst->config); } } } @@ -1313,8 +1321,12 @@ static int rlm_sql_accounting(void *instance, REQUEST * request) { radlog_request(L_ERR, 0, request, "Couldn't update SQL accounting START record - %s", (inst->module->sql_error)(sqlsocket, inst->config)); ret = RLM_MODULE_FAIL; + } else { + numaffected = (inst->module->sql_affected_rows)(sqlsocket, inst->config); + if (numaffected < 1) { + ret = RLM_MODULE_NOOP; + } } - (inst->module->sql_finish_query)(sqlsocket, inst->config); } } (inst->module->sql_finish_query)(sqlsocket, inst->config); @@ -1379,8 +1391,12 @@ static int rlm_sql_accounting(void *instance, REQUEST * request) { (inst->module->sql_error)(sqlsocket, inst->config)); ret = RLM_MODULE_FAIL; + } else { + numaffected = (inst->module->sql_affected_rows)(sqlsocket, inst->config); + if (numaffected < 1) { + ret = RLM_MODULE_NOOP; + } } - (inst->module->sql_finish_query)(sqlsocket, inst->config); } } }