From: Nick Porter Date: Mon, 14 Oct 2024 07:39:18 +0000 (+0100) Subject: Do clearup in finish_query X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=34bf4510d86eaba9a2f6be910218e1dd2922fcc7;p=thirdparty%2Ffreeradius-server.git Do clearup in finish_query Rather than when preparing the next query --- 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 776332f5f57..6c2fe2344f2 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 @@ -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; } diff --git a/src/modules/rlm_sql/drivers/rlm_sql_firebird/sql_fbapi.c b/src/modules/rlm_sql/drivers/rlm_sql_firebird/sql_fbapi.c index dd644eb4387..dc9c95d33bd 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_firebird/sql_fbapi.c +++ b/src/modules/rlm_sql/drivers/rlm_sql_firebird/sql_fbapi.c @@ -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); diff --git a/src/modules/rlm_sql/drivers/rlm_sql_firebird/sql_fbapi.h b/src/modules/rlm_sql/drivers/rlm_sql_firebird/sql_fbapi.h index 6ab5363618a..bf986ad8015 100644 --- a/src/modules/rlm_sql/drivers/rlm_sql_firebird/sql_fbapi.h +++ b/src/modules/rlm_sql/drivers/rlm_sql_firebird/sql_fbapi.h @@ -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);