]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Do clearup in finish_query
authorNick Porter <nick@portercomputing.co.uk>
Mon, 14 Oct 2024 07:39:18 +0000 (08:39 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Mon, 14 Oct 2024 17:17:06 +0000 (18:17 +0100)
Rather than when preparing the next query

src/modules/rlm_sql/drivers/rlm_sql_firebird/rlm_sql_firebird.c
src/modules/rlm_sql/drivers/rlm_sql_firebird/sql_fbapi.c
src/modules/rlm_sql/drivers/rlm_sql_firebird/sql_fbapi.h

index 776332f5f5792c41ddf9186db812e8050b1fa75c..6c2fe2344f2d5dd627c211394aef454c8bf0d012 100644 (file)
@@ -199,7 +199,8 @@ static sql_rcode_t sql_finish_select_query(fr_sql_query_t *query_ctx, UNUSED rlm
        rlm_sql_firebird_conn_t *conn = (rlm_sql_firebird_conn_t *) query_ctx->handle->conn;
 
        fb_commit(conn);
-       fb_close_cursor(conn);
+       fb_free_statement(conn);
+       talloc_free_children(conn->sqlda_out);
 
        return 0;
 }
@@ -209,6 +210,11 @@ static sql_rcode_t sql_finish_select_query(fr_sql_query_t *query_ctx, UNUSED rlm
  */
 static sql_rcode_t sql_finish_query(UNUSED fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t const *config)
 {
+       rlm_sql_firebird_conn_t *conn = (rlm_sql_firebird_conn_t *) query_ctx->handle->conn;
+
+       fb_free_statement(conn);
+       talloc_free_children(conn->sqlda_out);
+
        return 0;
 }
 
index dd644eb4387a429c9494779fe83ab29749fd8683..dc9c95d33bdc220d09e384884d8e4df8990536cb 100644 (file)
@@ -419,7 +419,6 @@ static int fb_prepare(rlm_sql_firebird_conn_t *conn, char const *query)
                }
        }
 
-       fb_free_statement(conn);
        if (!conn->stmt) {
                isc_dsql_allocate_statement(conn->status, &conn->dbh,
                                            &conn->stmt);
@@ -428,7 +427,6 @@ static int fb_prepare(rlm_sql_firebird_conn_t *conn, char const *query)
                }
        }
 
-       fb_free_sqlda(conn->sqlda_out);
        isc_dsql_prepare(conn->status, &conn->trh, &conn->stmt, 0, query,
                         conn->sql_dialect, conn->sqlda_out);
        if (IS_ISC_ERROR(conn->status)) {
@@ -517,12 +515,6 @@ int fb_affected_rows(rlm_sql_firebird_conn_t *conn) {
        return affected_rows;
 }
 
-int fb_close_cursor(rlm_sql_firebird_conn_t *conn) {
-       isc_dsql_free_statement(conn->status, &conn->stmt, DSQL_close);
-
-       return fb_error(conn);
-}
-
 void fb_free_statement(rlm_sql_firebird_conn_t *conn) {
        if (conn->stmt) {
                isc_dsql_free_statement(conn->status, &conn->stmt, DSQL_drop);
index 6ab5363618afe629dee1fa85ead6b44689010b35..bf986ad801518105a22bfb2bea30727bc12993e8 100644 (file)
@@ -75,7 +75,6 @@ int fb_affected_rows(rlm_sql_firebird_conn_t *conn);
 int fb_fetch(rlm_sql_firebird_conn_t *conn);
 void fb_free_sqlda(XSQLDA *sqlda);
 void fb_free_statement(rlm_sql_firebird_conn_t *conn);
-int fb_close_cursor(rlm_sql_firebird_conn_t *conn);
 int fb_rollback(rlm_sql_firebird_conn_t *conn);
 int fb_commit(rlm_sql_firebird_conn_t *conn);
 void fb_store_row(rlm_sql_firebird_conn_t *conn);