From 6ed97274ee444cc669808b80e7adf27bac0c2556 Mon Sep 17 00:00:00 2001 From: "Alan T. DeKok" Date: Tue, 10 May 2011 10:45:54 +0200 Subject: [PATCH] If accounting start/interim/stop doesn't do anything, return NOOP If num_affected_rows == 0, return NOOP --- src/modules/rlm_sql/rlm_sql.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index 6c7200132c..8a1b3304bb 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); } } } -- 2.47.3