]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Remove transitional uses_trunks flag and associated code paths
authorNick Porter <nick@portercomputing.co.uk>
Tue, 26 Nov 2024 12:48:47 +0000 (12:48 +0000)
committerNick Porter <nick@portercomputing.co.uk>
Wed, 27 Nov 2024 08:04:57 +0000 (08:04 +0000)
All drivers now use trunks

13 files changed:
src/modules/rlm_sql/drivers/rlm_sql_cassandra/rlm_sql_cassandra.c
src/modules/rlm_sql/drivers/rlm_sql_db2/rlm_sql_db2.c
src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c
src/modules/rlm_sql/drivers/rlm_sql_freetds/rlm_sql_freetds.c
src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c
src/modules/rlm_sql/drivers/rlm_sql_oracle/rlm_sql_oracle.c
src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c
src/modules/rlm_sql/drivers/rlm_sql_sqlite/rlm_sql_sqlite.c
src/modules/rlm_sql/drivers/rlm_sql_unixodbc/rlm_sql_unixodbc.c
src/modules/rlm_sql/rlm_sql.c
src/modules/rlm_sql/rlm_sql.h
src/modules/rlm_sql/sql.c
src/modules/rlm_sqlippool/rlm_sqlippool.c

index d544f2fe79d4529d712097c97f868aa476ea3aa1..2ce75b2d79beadbc7d5926e558a741cce7df866f 100644 (file)
@@ -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,
index 6abbb5a397f4ab344256a97695cfbc22f1ae5595..89fd331ba88fc7373442ab617b9b18fbe886f6b4 100644 (file)
@@ -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,
index e2fa5d0137bfc8d8f571a64a7fdf58eb6f0f4847..13d9338b2b36205a56ee061162c9f98dac785272 100644 (file)
@@ -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,
index 6c52371f05fcdb3875a248e6ce463b08a4b53f64..d01c3fa293f730fa30a62e9112b70cb92108d9b9 100644 (file)
@@ -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,
index 3920a7af012a0bf141e30ff305369e4b7aaf7b6b..73812a120870fc647539a42bf4108b22d3a00aec 100644 (file)
@@ -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,
index 228652d3d84af6a1dcf5f897a7f1228ed7d38b8a..b23c1f3c7b80a3ce7996c933e7a5715817339c8f 100644 (file)
@@ -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,
index 4574f9fdf8d37e44ff50f906dbed432ddfb1656e..d05bbb7ba89b95c75279910894ee08b974119b57 100644 (file)
@@ -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,
index 51cd8ff821b7cf12459aa663f263f9b9039355c4..37c93e5756757f674ce6a590a2e62c2631c8beb5 100644 (file)
@@ -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,
index 58c1a88c69245cb32a8a91bb416cf0dffaa62954..b7788adf44b74771edddab17e5224995b96ef1de 100644 (file)
@@ -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,
index ed1f660f747bb8db21e3c225fdfc06d7676e1a01..4ba0227df01a8da310ccfb773a560f059caa7d2a 100644 (file)
@@ -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;
index 76d359c8268173a106db85087ae0b6395f143df8..fb5e21d036a245579c93a2df389ff5f56299feb7 100644 (file)
@@ -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;
 
index 14672d7aac77fb61ceeea1da4a20f359fa491199..7a665ed27b22484e509c0e9dbecc4f7579dae4f0 100644 (file)
@@ -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;
index b4e42b572f49276313b43c8d47b54a7d6cf4ccda..b741c3f202933286d3c90c21d98d032dad80c8a6 100644 (file)
@@ -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,