Call finish_select_query if we experience an error retrieving the result
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 12 Jan 2017 15:10:22 +0000 (15:10 +0000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Thu, 12 Jan 2017 15:11:41 +0000 (15:11 +0000)
# Conflicts:
# src/modules/rlm_sql/rlm_sql.c

src/modules/rlm_sql/rlm_sql.c

index 354d096..c703658 100644 (file)
@@ -189,6 +189,7 @@ static ssize_t sql_xlat(void *instance, REQUEST *request, char const *query, cha
                numaffected = (inst->module->sql_affected_rows)(handle, inst->config);
                if (numaffected < 1) {
                        RDEBUG("SQL query affected no rows");
+                       (inst->driver->sql_finish_query)(handle, inst->config);
 
                        goto finish;
                }
@@ -225,7 +226,10 @@ static ssize_t sql_xlat(void *instance, REQUEST *request, char const *query, cha
        if (rcode != RLM_SQL_OK) goto query_error;
 
        rcode = rlm_sql_fetch_row(inst, request, &handle);
-       if (rcode) goto query_error;
+       if (rcode) {
+               (inst->driver->sql_finish_select_query)(handle, inst->config);
+               goto query_error;
+       }
 
        row = handle->row;
        if (!row) {
@@ -506,7 +510,7 @@ int sql_set_user(rlm_sql_t *inst, REQUEST *request, char const *username)
 
        fr_pair_value_strsteal(vp, expanded);
        RDEBUG2("SQL-User-Name set to '%s'", vp->vp_strvalue);
-       vp->op = T_OP_SET;      
+       vp->op = T_OP_SET;
 
        /*
         *      Delete any existing SQL-User-Name, and replace it with ours.