* Don't repeat yourself
*/
#define DO_PART(_x) if(sqlippool_command(inst->_x, &handle, inst, request) <0) goto error
+#define DO_AFFECTED(_x, _affected) _affected = sqlippool_command(inst->_x, &handle, inst, request); if (_affected < 0) goto error
#define RESERVE_CONNECTION(_handle, _pool, _request) _handle = fr_pool_connection_get(_pool, _request); \
if (!_handle) { \
REDEBUG("Failed reserving SQL connection"); \
if (handle) fr_pool_connection_release(inst->sql->pool, request, handle);
- RETURN_MODULE_OK;
+ RETURN_MODULE_UPDATED;
}
/*
*/
DO_PART(update_free);
- affected = sqlippool_command(inst->update_update, &handle, inst, request);
-
- if (affected < 0) {
- error:
- if (handle) fr_pool_connection_release(inst->sql->pool, request, handle);
- RETURN_MODULE_FAIL;
- }
+ DO_AFFECTED(update_update, affected);
if (handle) fr_pool_connection_release(inst->sql->pool, request, handle);
/*
* The lease has been updated - return OK
*/
- RETURN_MODULE_OK;
+ RETURN_MODULE_UPDATED;
} else {
/*
* The lease could not be updated - return notfound
*/
RETURN_MODULE_NOTFOUND;
}
+
+error:
+ if (handle) fr_pool_connection_release(inst->sql->pool, request, handle);
+ RETURN_MODULE_FAIL;
}
/*
{
rlm_sqlippool_t *inst = talloc_get_type_abort(mctx->inst->data, rlm_sqlippool_t);
rlm_sql_handle_t *handle;
+ int affected;
RESERVE_CONNECTION(handle, inst->sql->pool, request);
- DO_PART(release_clear);
+ DO_AFFECTED(release_clear, affected);
if (handle) fr_pool_connection_release(inst->sql->pool, request, handle);
- RETURN_MODULE_OK;
+ if (affected > 0) RETURN_MODULE_UPDATED;
+ RETURN_MODULE_NOTFOUND;
error:
if (handle) fr_pool_connection_release(inst->sql->pool, request, handle);