Call sql_finish_select_query and sql_release_socket in the correct when we
authorkkalev <kkalev>
Wed, 14 Aug 2002 13:44:45 +0000 (13:44 +0000)
committerkkalev <kkalev>
Wed, 14 Aug 2002 13:44:45 +0000 (13:44 +0000)
run the authenticate query

src/modules/rlm_sql/rlm_sql.c

index 5a53274..93d2dfa 100644 (file)
@@ -475,26 +475,33 @@ static int rlm_sql_authorize(void *instance, REQUEST * request) {
                }
                ret = rlm_sql_fetch_row(sqlsocket, inst);
 
-               (inst->module->sql_finish_select_query)(sqlsocket, inst->config);
-               sql_release_socket(inst, sqlsocket);
-
                if (ret) {
                        radlog(L_ERR, "rlm_sql_authorize: query failed");
+                       (inst->module->sql_finish_select_query)(sqlsocket, inst->config);
+                       sql_release_socket(inst, sqlsocket);
                        return RLM_MODULE_FAIL;
                }
 
                row = sqlsocket->row;
                if (row == NULL) {
                        radlog(L_ERR, "rlm_sql_authorize: no rows returned from query (no such user)");
+                       (inst->module->sql_finish_select_query)(sqlsocket, inst->config);
+                       sql_release_socket(inst, sqlsocket);
                        return RLM_MODULE_OK;
                }
 
                if (row[0] == NULL) {
                        radlog(L_ERR, "rlm_sql_authorize: row[0] returned NULL.");
+                       (inst->module->sql_finish_select_query)(sqlsocket, inst->config);
+                       sql_release_socket(inst, sqlsocket);
                        return RLM_MODULE_OK;
                }
                if ((passwd_item = pairmake("User-Password",row[0],T_OP_SET)) != NULL)
                        pairadd(&request->config_items,passwd_item);
+
+               (inst->module->sql_finish_select_query)(sqlsocket, inst->config);
+               sql_release_socket(inst, sqlsocket);
+
                goto move_on;
        }
        /* Remove the username we (maybe) added above */