]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
convert query timeout to time_delta
authorAlan T. DeKok <aland@freeradius.org>
Wed, 22 Sep 2021 17:15:55 +0000 (13:15 -0400)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 22 Sep 2021 17:15:55 +0000 (13:15 -0400)
raddb/mods-config/sql/driver/sqlite
src/modules/rlm_sql/drivers/rlm_sql_cassandra/rlm_sql_cassandra.c
src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.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/rlm_sql.c
src/modules/rlm_sql/rlm_sql.h

index ec8fe3b7cbc76a1423f48ab9da91a66d7dc56d67..783bc32e443e805af833c08090057b82a6487631 100644 (file)
@@ -9,11 +9,7 @@
 sqlite {
        # Path to the sqlite database
        filename = "/tmp/freeradius.db"
-#
-       # How long to wait for write locks on the database to be
-       # released (in ms) before giving up.
-       busy_timeout = 200
-#
+
        # If the file above does not exist and bootstrap is set
        # a new database file will be created, and the SQL statements
        # contained within the bootstrap file will be executed.
index 8cc494fe03ff9350ab6f4eb4f767990236346f02..170d24ff59985a0f268745c73d6e253f759ce9af 100644 (file)
@@ -759,7 +759,7 @@ do {\
        DO_CASS_OPTION("sql_server", cass_cluster_set_contact_points(cluster, config->sql_server));
        if (config->sql_port) DO_CASS_OPTION("sql_port", cass_cluster_set_port(cluster, config->sql_port));
        /* Can't fail */
-       if (config->query_timeout) cass_cluster_set_request_timeout(cluster, config->query_timeout * 1000);
+       if (config->query_timeout) cass_cluster_set_request_timeout(cluster, fr_time_delta_to_msec(config->query_timeout));
        /* Can't fail */
        if (config->sql_login && config->sql_password) cass_cluster_set_credentials(cluster, config->sql_login,
                                                                                    config->sql_password);
index 801624b1236894b7809ccb09e1cee6368933621a..aa54b957091758467f68bd3d593080bbf3dcf503 100644 (file)
@@ -288,22 +288,22 @@ static sql_rcode_t sql_socket_init(rlm_sql_handle_t *handle, rlm_sql_config_t *c
        mysql_options(&(conn->db), MYSQL_OPT_CONNECT_TIMEOUT, &connect_timeout);
 
        if (config->query_timeout) {
-               unsigned int read_timeout = config->query_timeout;
-               unsigned int write_timeout = config->query_timeout;
+               unsigned int read_timeout = fr_time_delta_to_sec(config->query_timeout);
+               unsigned int write_timeout = fr_time_delta_to_sec(config->query_timeout);
 
                /*
                 *      The timeout in seconds for each attempt to read from the server.
                 *      There are retries if necessary, so the total effective timeout
                 *      value is three times the option value.
                 */
-               if (config->query_timeout >= 3) read_timeout /= 3;
+               if (read_timeout >= 3) read_timeout /= 3;
 
                /*
                 *      The timeout in seconds for each attempt to write to the server.
                 *      There is a retry if necessary, so the total effective timeout
                 *      value is two times the option value.
                 */
-               if (config->query_timeout >= 2) write_timeout /= 2;
+               if (write_timeout >= 2) write_timeout /= 2;
 
                /*
                 *      Connect timeout is actually connect timeout (according to the
index 5eaa8dc70e2b0bc5b5032ead937319aa9fd3903a..1fd2241ff445ee38d9efd529bb0a15c0dd976e05 100644 (file)
@@ -259,7 +259,7 @@ static CC_HINT(nonnull) sql_rcode_t sql_query(rlm_sql_handle_t *handle, rlm_sql_
 {
        rlm_sql_postgres_conn_t *conn = handle->conn;
        rlm_sql_postgres_t      *inst = config->driver;
-       fr_time_delta_t         timeout = fr_time_delta_from_sec(config->query_timeout);
+       fr_time_delta_t         timeout = config->query_timeout;
        fr_time_t               start;
        int                     sockfd;
        PGresult                *tmp_result;
@@ -303,7 +303,7 @@ static CC_HINT(nonnull) sql_rcode_t sql_query(rlm_sql_handle_t *handle, rlm_sql_
                r = select(sockfd + 1, &read_fd, NULL, NULL, config->query_timeout ? &fr_time_delta_to_timeval(timeout - elapsed) : NULL);
                if (r == 0) {
                too_long:
-                       ERROR("Socket read timeout after %d seconds", config->query_timeout);
+                       ERROR("Socket read timeout after %d seconds", (int) fr_time_delta_to_sec(config->query_timeout));
                        return RLM_SQL_RECONNECT;
                }
                if (r < 0) {
@@ -579,7 +579,7 @@ static int mod_instantiate(rlm_sql_config_t const *config, void *instance, CONF_
                }
 
                if (config->query_timeout) {
-                       db_string = talloc_asprintf_append(db_string, " connect_timeout=%d", config->query_timeout);
+                       db_string = talloc_asprintf_append(db_string, " connect_timeout=%d", (int) fr_time_delta_to_sec(config->query_timeout));
                }
 
                if (inst->send_application_name) {
@@ -611,7 +611,7 @@ static int mod_instantiate(rlm_sql_config_t const *config, void *instance, CONF_
                }
 
                if ((config->query_timeout) && !strstr(db_string, "connect_timeout=")) {
-                       db_string = talloc_asprintf_append(db_string, " connect_timeout=%d", config->query_timeout);
+                       db_string = talloc_asprintf_append(db_string, " connect_timeout=%d", (int) fr_time_delta_to_sec(config->query_timeout));
                }
 
                if (inst->send_application_name && !strstr(db_string, "application_name=")) {
index ad1241de438f98f76ba4fe679335026cffb08777..85896bf63599dbc301f071aad30380ff3eb46841 100644 (file)
@@ -57,13 +57,11 @@ typedef struct {
 
 typedef struct {
        char const      *filename;
-       fr_time_t       busy_timeout;
        bool            bootstrap;
 } rlm_sql_sqlite_t;
 
 static const CONF_PARSER driver_config[] = {
        { FR_CONF_OFFSET("filename", FR_TYPE_FILE_OUTPUT | FR_TYPE_REQUIRED, rlm_sql_sqlite_t, filename) },
-       { FR_CONF_OFFSET("busy_timeout", FR_TYPE_TIME_DELTA, rlm_sql_sqlite_t, busy_timeout), .dflt = "200s" },
        CONF_PARSER_TERMINATOR
 };
 
@@ -437,7 +435,7 @@ static int CC_HINT(nonnull) sql_socket_init(rlm_sql_handle_t *handle, rlm_sql_co
 #endif
                return RLM_SQL_ERROR;
        }
-       status = sqlite3_busy_timeout(conn->db, fr_time_delta_to_sec(inst->busy_timeout));
+       status = sqlite3_busy_timeout(conn->db, fr_time_delta_to_sec(config->query_timeout));
        if (sql_check_error(conn->db, status) != RLM_SQL_OK) {
                sql_print_error(conn->db, status, "Error setting busy timeout");
                return RLM_SQL_ERROR;
index c336ec5f5bed836db664fd1f10f81edcaef0dec9..7ae578e6e6ef26e64bd5c92e43d4554e25dc41ce 100644 (file)
@@ -108,7 +108,7 @@ static const CONF_PARSER module_config[] = {
        /*
         *      This only works for a few drivers.
         */
-       { FR_CONF_OFFSET("query_timeout", FR_TYPE_UINT32, rlm_sql_config_t, query_timeout) },
+       { FR_CONF_OFFSET("query_timeout", FR_TYPE_TIME_DELTA, rlm_sql_config_t, query_timeout) },
 
        { FR_CONF_POINTER("accounting", FR_TYPE_SUBSECTION, NULL), .subcs = (void const *) acct_config },
 
index ef3d14325f1925e8c9e2f66caf23626e8042a9c5..9a6310e33242e79f9ecea33b6de420f0208beba7 100644 (file)
@@ -120,7 +120,7 @@ typedef struct {
                                                                //!< NULL drivers.
 
        char const              *allowed_chars;                 //!< Chars which done need escaping..
-       uint32_t                query_timeout;                  //!< How long to allow queries to run for.
+       fr_time_delta_t         query_timeout;                  //!< How long to allow queries to run for.
 
        char const              *connect_query;                 //!< Query executed after establishing
                                                                //!< new connection.