From: Nick Porter Date: Tue, 26 Nov 2024 12:48:47 +0000 (+0000) Subject: Remove transitional uses_trunks flag and associated code paths X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=694cabb7aeb2643bdb4ca8b7cddab52cd08702b4;p=thirdparty%2Ffreeradius-server.git Remove transitional uses_trunks flag and associated code paths All drivers now use trunks --- diff --git a/src/modules/rlm_sql/drivers/rlm_sql_cassandra/rlm_sql_cassandra.c b/src/modules/rlm_sql/drivers/rlm_sql_cassandra/rlm_sql_cassandra.c index d544f2fe79d..2ce75b2d79b 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_cassandra/rlm_sql_cassandra.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_cassandra/rlm_sql_cassandra.c @@ -1058,7 +1058,6 @@ rlm_sql_driver_t rlm_sql_cassandra = { .sql_error = sql_error, .sql_finish_query = sql_finish_query, .sql_finish_select_query = sql_finish_query, - .uses_trunks = true, .trunk_io_funcs = { .connection_alloc = sql_trunk_connection_alloc, .connection_notify = sql_trunk_connection_notify, diff --git a/src/modules/rlm_sql/drivers/rlm_sql_db2/rlm_sql_db2.c b/src/modules/rlm_sql/drivers/rlm_sql_db2/rlm_sql_db2.c index 6abbb5a397f..89fd331ba88 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_db2/rlm_sql_db2.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_db2/rlm_sql_db2.c @@ -325,7 +325,6 @@ rlm_sql_driver_t rlm_sql_db2 = { .sql_error = sql_error, .sql_finish_query = sql_finish_query, .sql_finish_select_query = sql_finish_query, - .uses_trunks = true, .trunk_io_funcs = { .connection_alloc = sql_trunk_connection_alloc, .request_mux = sql_trunk_request_mux, diff --git a/src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c b/src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c index e2fa5d0137b..13d9338b2b3 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c @@ -314,7 +314,6 @@ rlm_sql_driver_t rlm_sql_firebird = { .sql_error = sql_error, .sql_finish_query = sql_finish_query, .sql_finish_select_query = sql_finish_query, - .uses_trunks = true, .trunk_io_funcs = { .connection_alloc = sql_trunk_connection_alloc, .request_mux = sql_trunk_request_mux, diff --git a/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c b/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c index 6c52371f05f..d01c3fa293f 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c @@ -837,7 +837,6 @@ rlm_sql_driver_t rlm_sql_freetds = { .sql_error = sql_error, .sql_finish_query = sql_finish_query, .sql_finish_select_query = sql_finish_select_query, - .uses_trunks = true, .trunk_io_funcs = { .connection_alloc = sql_trunk_connection_alloc, .request_mux = sql_trunk_request_mux, diff --git a/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c b/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c index 3920a7af012..73812a12087 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c @@ -1162,7 +1162,6 @@ rlm_sql_driver_t rlm_sql_mysql = { .sql_escape_func = sql_escape_func, .sql_escape_arg_alloc = sql_escape_arg_alloc, .sql_escape_arg_free = sql_escape_arg_free, - .uses_trunks = true, .trunk_io_funcs = { .connection_alloc = sql_trunk_connection_alloc, .connection_notify = sql_trunk_connection_notify, diff --git a/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c b/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c index 228652d3d84..b23c1f3c7b8 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c @@ -844,7 +844,6 @@ rlm_sql_driver_t rlm_sql_oracle = { .sql_error = sql_error, .sql_finish_query = sql_finish_query, .sql_finish_select_query = sql_finish_select_query, - .uses_trunks = true, .trunk_io_funcs = { .connection_alloc = sql_trunk_connection_alloc, .connection_notify = sql_trunk_connection_notify, diff --git a/src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c b/src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c index 4574f9fdf8d..d05bbb7ba89 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c @@ -857,7 +857,6 @@ rlm_sql_driver_t rlm_sql_postgresql = { .sql_escape_func = sql_escape_func, .sql_escape_arg_alloc = sql_escape_arg_alloc, .sql_escape_arg_free = sql_escape_arg_free, - .uses_trunks = true, .trunk_io_funcs = { .connection_alloc = sql_trunk_connection_alloc, .connection_notify = sql_trunk_connection_notify, diff --git a/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c b/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c index 51cd8ff821b..37c93e57567 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c @@ -813,7 +813,6 @@ rlm_sql_driver_t rlm_sql_sqlite = { .sql_error = sql_error, .sql_finish_query = sql_finish_query, .sql_finish_select_query = sql_finish_query, - .uses_trunks = true, .trunk_io_funcs = { .connection_alloc = sql_trunk_connection_alloc, .request_mux = sql_trunk_request_mux, diff --git a/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/rlm_sql_unixodbc.c b/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/rlm_sql_unixodbc.c index 58c1a88c692..b7788adf44b 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/rlm_sql_unixodbc.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_unixodbc/rlm_sql_unixodbc.c @@ -732,7 +732,6 @@ rlm_sql_driver_t rlm_sql_unixodbc = { .sql_error = sql_error, .sql_finish_query = sql_finish_query, .sql_finish_select_query = sql_finish_query, - .uses_trunks = true, .trunk_io_funcs = { .connection_alloc = sql_trunk_connection_alloc, .connection_notify = sql_trunk_connection_notify, diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index ed1f660f747..4ba0227df01 100644 --- a/src/modules/rlm_sql/rlm_sql.c +++ b/src/modules/rlm_sql/rlm_sql.c @@ -75,6 +75,11 @@ static const conf_parser_t module_config[] = { */ { FR_CONF_OFFSET("query_timeout", rlm_sql_config_t, query_timeout), .dflt = "5" }, + /* + * The pool section is used for trunk config + */ + { FR_CONF_OFFSET_SUBSECTION("pool", 0, rlm_sql_config_t, trunk_conf, trunk_config) }, + CONF_PARSER_TERMINATOR }; @@ -452,7 +457,6 @@ static xlat_action_t sql_xlat_query_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, x rlm_sql_t const *inst = query_ctx->inst; fr_value_box_t *vb; xlat_action_t ret = XLAT_ACTION_DONE; - rlm_sql_handle_t *handle = query_ctx->handle; int numaffected; fr_assert(query_ctx->type == SQL_QUERY_OTHER); @@ -483,7 +487,6 @@ static xlat_action_t sql_xlat_query_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, x finish: talloc_free(query_ctx); - if (!inst->driver->uses_trunks) fr_pool_connection_release(inst->pool, request, handle); return ret; } @@ -495,7 +498,6 @@ static xlat_action_t sql_xlat_select_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, rlm_sql_t const *inst = query_ctx->inst; fr_value_box_t *vb; xlat_action_t ret = XLAT_ACTION_DONE; - rlm_sql_handle_t *handle = query_ctx->handle; rlm_rcode_t p_result; rlm_sql_row_t row; bool fetched = false; @@ -539,7 +541,6 @@ static xlat_action_t sql_xlat_select_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, finish: talloc_free(query_ctx); - if (!inst->driver->uses_trunks) fr_pool_connection_release(inst->pool, request, handle); return ret; } @@ -570,11 +571,6 @@ static xlat_action_t sql_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, rlm_rcode_t p_result; unlang_action_t query_ret = UNLANG_ACTION_CALCULATE_RESULT; - if (!inst->driver->uses_trunks) { - handle = fr_pool_connection_get(inst->pool, request); /* connection pool should produce error */ - if (!handle) return XLAT_ACTION_FAIL; - } - if (call_env->filename.type == FR_TYPE_STRING && call_env->filename.vb_length > 0) { rlm_sql_query_log(inst, call_env->filename.vb_strvalue, arg->vb_strvalue); } @@ -630,11 +626,6 @@ static xlat_action_t sql_fetch_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t fr_value_box_t *arg = fr_value_box_list_head(in); fr_sql_query_t *query_ctx = NULL; - if (!inst->driver->uses_trunks) { - handle = fr_pool_connection_get(inst->pool, request); /* connection pool should produce error */ - if (!handle) return XLAT_ACTION_FAIL; - } - if (call_env->filename.type == FR_TYPE_STRING && call_env->filename.vb_length > 0) { rlm_sql_query_log(inst, call_env->filename.vb_strvalue, arg->vb_strvalue); } @@ -667,11 +658,6 @@ static xlat_action_t sql_modify_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ct fr_sql_query_t *query_ctx = NULL; rlm_rcode_t p_result; - if (!inst->driver->uses_trunks) { - handle = fr_pool_connection_get(inst->pool, request); /* connection pool should produce error */ - if (!handle) return XLAT_ACTION_FAIL; - } - if (call_env->filename.type == FR_TYPE_STRING && call_env->filename.vb_length > 0) { rlm_sql_query_log(inst, call_env->filename.vb_strvalue, arg->vb_strvalue); } @@ -917,11 +903,6 @@ static unlang_action_t mod_map_proc(rlm_rcode_t *p_result, void const *mod_inst, RETURN_MODULE_FAIL; } - if (!inst->driver->uses_trunks) { - handle = fr_pool_connection_get(inst->pool, request); /* connection pool should produce error */ - if (!handle) RETURN_MODULE_FAIL; - } - MEM(map_ctx = talloc(unlang_interpret_frame_talloc_ctx(request), sql_map_ctx_t)); *map_ctx = (sql_map_ctx_t) { .inst = inst, @@ -1199,14 +1180,6 @@ static xlat_action_t sql_group_xlat_resume(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcu .query = query, }; - if (!inst->driver->uses_trunks) { - xlat_ctx->handle = fr_pool_connection_get(inst->pool, request); - if (!xlat_ctx->handle) { - REDEBUG("Failed getting conneciton handle"); - return XLAT_ACTION_FAIL; - } - } - if (unlang_xlat_yield(request, sql_group_xlat_query_resume, NULL, 0, xlat_ctx) != XLAT_ACTION_YIELD) return XLAT_ACTION_FAIL; if (sql_get_grouplist(xlat_ctx->group_ctx, &xlat_ctx->handle, thread->trunk, request) != UNLANG_ACTION_PUSHED_CHILD) @@ -1745,16 +1718,6 @@ static unlang_action_t CC_HINT(nonnull) mod_authorize(rlm_rcode_t *p_result, mod MEM(autz_ctx->map_ctx = talloc_zero(autz_ctx, fr_sql_map_ctx_t)); talloc_set_destructor(autz_ctx, sql_autz_ctx_free); - /* - * Reserve a socket - * - * This is freed by the talloc destructor for autz_ctx - */ - if (!inst->driver->uses_trunks) { - autz_ctx->handle = fr_pool_connection_get(inst->pool, request); - if (!autz_ctx->handle) RETURN_MODULE_FAIL; - } - if (!inst->sql_escape_arg && !thread->sql_escape_arg) request_data_add(request, (void *)sql_escape_uctx_alloc, 0, autz_ctx->handle, false, false, false); @@ -1860,7 +1823,6 @@ static unlang_action_t mod_sql_redundant_query_resume(rlm_rcode_t *p_result, UNU case RLM_SQL_NO_MORE_ROWS: break; } - fr_assert(inst->driver->uses_trunks || redundant_ctx->handle); /* * We need to have updated something for the query to have been @@ -1948,11 +1910,6 @@ static unlang_action_t CC_HINT(nonnull) mod_sql_redundant(rlm_rcode_t *p_result, }; talloc_set_destructor(redundant_ctx, sql_redundant_ctx_free); - if (!inst->driver->uses_trunks) { - redundant_ctx->handle = fr_pool_connection_get(inst->pool, request); - if (!redundant_ctx->handle) RETURN_MODULE_FAIL; - } - if (!inst->sql_escape_arg && !thread->sql_escape_arg) request_data_add(request, (void *)sql_escape_uctx_alloc, 0, redundant_ctx->handle, false, false, false); @@ -2189,15 +2146,10 @@ static int mod_instantiate(module_inst_ctx_t const *mctx) /* * Export these methods, too. This avoids RTDL_GLOBAL. */ - if (inst->driver->uses_trunks) { - inst->query = rlm_sql_trunk_query; - inst->select = rlm_sql_trunk_query; - } else { - inst->query = rlm_sql_query; - inst->select = rlm_sql_select_query; - } - inst->fetch_row = rlm_sql_fetch_row; - inst->query_alloc = fr_sql_query_alloc; + inst->query = rlm_sql_trunk_query; + inst->select = rlm_sql_trunk_query; + inst->fetch_row = rlm_sql_fetch_row; + inst->query_alloc = fr_sql_query_alloc; /* * Either use the module specific escape function @@ -2217,29 +2169,15 @@ static int mod_instantiate(module_inst_ctx_t const *mctx) return -1; } - if (inst->driver->uses_trunks) { - CONF_SECTION *cs; - - /* - * The "pool" conf section is either used for legacy pool - * connections or trunk connections depending on the - * driver configuration. - */ - cs = cf_section_find(conf, "pool", NULL); - if (!cs) cs = cf_section_alloc(conf, conf, "pool", NULL); - if (cf_section_rules_push(cs, trunk_config) < 0) return -1; - if (cf_section_parse(&inst->config, &inst->config.trunk_conf, cs) < 0) return -1; - - /* - * Most SQL trunks can only have one running request per connection. - */ - if (!(inst->driver->flags & RLM_SQL_MULTI_QUERY_CONN)) { - inst->config.trunk_conf.target_req_per_conn = 1; - inst->config.trunk_conf.max_req_per_conn = 1; - } - if (!inst->driver->trunk_io_funcs.connection_notify) { - inst->config.trunk_conf.always_writable = true; - } + /* + * Most SQL trunks can only have one running request per connection. + */ + if (!(inst->driver->flags & RLM_SQL_MULTI_QUERY_CONN)) { + inst->config.trunk_conf.target_req_per_conn = 1; + inst->config.trunk_conf.max_req_per_conn = 1; + } + if (!inst->driver->trunk_io_funcs.connection_notify) { + inst->config.trunk_conf.always_writable = true; } /* @@ -2262,16 +2200,6 @@ static int mod_instantiate(module_inst_ctx_t const *mctx) return -1; } - if (inst->driver->uses_trunks) return 0; - - /* - * Initialise the connection pool for this instance - */ - INFO("Attempting to connect to database \"%s\"", inst->config.sql_db); - - inst->pool = module_rlm_connection_pool_init(conf, inst, sql_mod_conn_create, NULL, NULL, NULL, NULL); - if (!inst->pool) return -1; - return 0; } @@ -2431,8 +2359,6 @@ static int mod_thread_instantiate(module_thread_inst_ctx_t const *mctx) t->inst = inst; - if (!inst->driver->uses_trunks) return 0; - t->trunk = trunk_alloc(t, mctx->el, &inst->driver->trunk_io_funcs, &inst->config.trunk_conf, inst->name, t, false); if (!t->trunk) return -1; diff --git a/src/modules/rlm_sql/rlm_sql.h b/src/modules/rlm_sql/rlm_sql.h index 76d359c8268..fb5e21d036a 100644 --- a/src/modules/rlm_sql/rlm_sql.h +++ b/src/modules/rlm_sql/rlm_sql.h @@ -230,7 +230,6 @@ typedef struct { void *(*sql_escape_arg_alloc)(TALLOC_CTX *ctx, fr_event_list_t *el, void *uctx); void (*sql_escape_arg_free)(void *uctx); - bool uses_trunks; //!< Transitional flag for drivers which use trunks. trunk_io_funcs_t trunk_io_funcs; //!< Trunk callback functions for this driver. } rlm_sql_driver_t; diff --git a/src/modules/rlm_sql/sql.c b/src/modules/rlm_sql/sql.c index 14672d7aac7..7a665ed27b2 100644 --- a/src/modules/rlm_sql/sql.c +++ b/src/modules/rlm_sql/sql.c @@ -310,8 +310,7 @@ unlang_action_t rlm_sql_fetch_row(rlm_rcode_t *p_result, UNUSED int *priority, r fr_sql_query_t *query_ctx = talloc_get_type_abort(uctx, fr_sql_query_t); rlm_sql_t const *inst = query_ctx->inst; - if ((inst->driver->uses_trunks && !query_ctx->tconn) || - (!inst->driver->uses_trunks && (!query_ctx->handle || !query_ctx->handle->conn))) { + if (!query_ctx->tconn) { ROPTIONAL(RERROR, ERROR, "Invalid connection"); query_ctx->rcode = RLM_SQL_ERROR; RETURN_MODULE_FAIL; diff --git a/src/modules/rlm_sqlippool/rlm_sqlippool.c b/src/modules/rlm_sqlippool/rlm_sqlippool.c index b4e42b572f4..b741c3f2029 100644 --- a/src/modules/rlm_sqlippool/rlm_sqlippool.c +++ b/src/modules/rlm_sqlippool/rlm_sqlippool.c @@ -139,18 +139,6 @@ static void *sql_escape_uctx_alloc(request_t *request, void const *uctx) return t_ctx; } -/* - * Don't repeat yourself - */ -#define RESERVE_CONNECTION(_handle, _sql, _request) if (!_sql->driver->uses_trunks) { \ - handle = fr_pool_connection_get(_sql->pool, _request); \ - if (!_handle) { \ - REDEBUG("Failed reserving SQL connection"); \ - RETURN_MODULE_FAIL; \ - } \ -} - - /* * Process the results of an SQL query expected to return a single row */ @@ -524,7 +512,6 @@ static unlang_action_t CC_HINT(nonnull) mod_alloc(rlm_rcode_t *p_result, module_ RETURN_MODULE_NOOP; } - RESERVE_CONNECTION(handle, inst->sql, request); if (!sql->sql_escape_arg && !thread->sql_escape_arg && handle) request_data_add(request, (void *)sql_escape_uctx_alloc, 0, handle, false, false, false); @@ -638,7 +625,6 @@ static unlang_action_t CC_HINT(nonnull) mod_common(rlm_rcode_t *p_result, module if ((env->free.type != FR_TYPE_STRING) && (env->update.type != FR_TYPE_STRING)) RETURN_MODULE_NOOP; - RESERVE_CONNECTION(handle, inst->sql, request); MEM(common_ctx = talloc(unlang_interpret_frame_talloc_ctx(request), ippool_common_ctx_t)); *common_ctx = (ippool_common_ctx_t) { .request = request,