Implemented sql_destroy_socket
authoraland <aland>
Tue, 2 Sep 2003 18:30:29 +0000 (18:30 +0000)
committeraland <aland>
Tue, 2 Sep 2003 18:30:29 +0000 (18:30 +0000)
src/modules/rlm_sql/drivers/rlm_sql_db2/sql_db2.c
src/modules/rlm_sql/drivers/rlm_sql_iodbc/sql_iodbc.c
src/modules/rlm_sql/drivers/rlm_sql_mysql/sql_mysql.c
src/modules/rlm_sql/drivers/rlm_sql_oracle/sql_oracle.c
src/modules/rlm_sql/drivers/rlm_sql_postgresql/sql_postgresql.c
src/modules/rlm_sql/drivers/rlm_sql_sybase/sql_sybase.c
src/modules/rlm_sql/drivers/rlm_sql_unixodbc/sql_unixodbc.c

index 303248b..36dc9d6 100644 (file)
@@ -80,6 +80,21 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config)
        return 0;
 }
 
+
+/************************************************************************* 
+ *                                                                         
+ *      Function: sql_destroy_socket                                       
+ *                                                                         
+ *      Purpose: Free socket and private connection data                   
+ *                                                                         
+ *************************************************************************/
+static int sql_destroy_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config)
+{
+       free(sqlsocket->conn);
+       sqlsocket->conn = NULL;
+       return 0;
+}
+
 /*************************************************************************
  *
  *     Function: sql_query
@@ -327,7 +342,7 @@ not_implemented(SQLSOCK * sqlsocket, SQL_CONFIG *config)
 rlm_sql_module_t rlm_sql_db2 = {
        "rlm_sql_db2",
        sql_init_socket,
-       not_implemented, /* sql_destroy_socket*/
+       sql_destroy_socket, /* sql_destroy_socket*/
        sql_query,
        sql_select_query,
        not_implemented, /* sql_store_result */
index 29ce7f7..808d42e 100644 (file)
@@ -49,13 +49,13 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config) {
        if(SQLAllocEnv(&iodbc_sock->env_handle) != SQL_SUCCESS) {
                radlog(L_CONS|L_ERR, "sql_create_socket: SQLAllocEnv failed:  %s", 
                                sql_error(sqlsocket, config));
-               exit(1);
+               return -1;
        }
 
        if(SQLAllocConnect(iodbc_sock->env_handle, &iodbc_sock->dbc_handle) != SQL_SUCCESS) {
                radlog(L_CONS|L_ERR, "sql_create_socket: SQLAllocConnect failed:  %s", 
                                sql_error(sqlsocket, config));
-               exit(1);
+               return -1;
        }
 
        if (SQLConnect(iodbc_sock->dbc_handle, config->sql_db, SQL_NTS, 
@@ -63,7 +63,7 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config) {
                                SQL_NTS) != SQL_SUCCESS) {
                radlog(L_CONS|L_ERR, "sql_create_socket: SQLConnectfailed:  %s", 
                                sql_error(sqlsocket, config));
-               exit(1);
+               return -1;
        }
 
        return 0;
@@ -78,10 +78,8 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config) {
  *************************************************************************/
 static int sql_destroy_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config)
 {
-       /*
-        *      FIXME: Someone write the odbc specific disconnect and
-        *      free code!!
-        */
+       free(sqlsocket->conn);
+       sqlsocket->conn = NULL;
        return 0;
 }
 
@@ -100,7 +98,7 @@ static int sql_query(SQLSOCK *sqlsocket, SQL_CONFIG *config, char *querystr) {
        if(SQLAllocStmt(iodbc_sock->dbc_handle, &iodbc_sock->stmt_handle) != SQL_SUCCESS) {
                radlog(L_CONS|L_ERR, "sql_create_socket: SQLAllocStmt failed:  %s", 
                                sql_error(sqlsocket, config));
-               exit(1);
+               return -1;
        }
 
        if (config->sqltrace)
index c84a90e..ac0b104 100644 (file)
@@ -89,9 +89,9 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config)
  *************************************************************************/
 static int sql_destroy_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config)
 {
-       rlm_sql_mysql_sock *mysql_sock = sqlsocket->conn;
+       free(sqlsocket->conn);
+       sqlsocket->conn = NULL;
 
-       free(mysql_sock);
        return 0;
 }
 
index 57e1775..b84238a 100644 (file)
@@ -157,11 +157,8 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config) {
  *************************************************************************/
 static int sql_destroy_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config)
 {
-  
-       /*
-        *      FIXME: Someone write the oracle specific disconnect
-        *      and free code!!
-        */
+       free(sqlsocket->conn);
+       sqlsocket->conn = NULL;
        return 0;
 }
 
index ea8fa9a..955f6e1 100644 (file)
@@ -280,9 +280,8 @@ static int sql_store_result(SQLSOCK * sqlsocket, SQL_CONFIG *config) {
  *************************************************************************/
 static int sql_destroy_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config)
 {
-        rlm_sql_postgres_sock *pg_sock = sqlsocket->conn;
-
-        free(pg_sock);
+        free(sqlsocket->conn);
+       sqlsocket->conn = NULL;
         return 0;
 }
 
index 916e53c..28b06cb 100644 (file)
@@ -283,10 +283,10 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config) {
  *     Purpose: Free socket and private connection data
  *
  *************************************************************************/
-static int sql_destroy_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config) {
-
-       /* Why bother, rlm_sql never calls sql_destroy_socket anyway */
-       
+static int sql_destroy_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config)
+{
+       free(sqlsocket->conn);
+       sqlsocket->conn = NULL;
        return 0;
 }
 
index 7cb5764..a3b53ed 100644 (file)
@@ -102,9 +102,9 @@ static int sql_init_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config) {
  *************************************************************************/
 static int sql_destroy_socket(SQLSOCK *sqlsocket, SQL_CONFIG *config)
 {
-    rlm_sql_unixodbc_sock *unixodbc_sock = sqlsocket->conn;
-    free(unixodbc_sock);
-    return 0;
+       free(sqlsocket->conn);
+       sqlsocket->conn = NULL;
+       return 0;
 }