@@ -38,7 +38,7 @@ RCSID("$Id$")
3838#ifdef HAVE_MYSQL_MYSQL_H
3939# include <mysql/errmsg.h>
4040DIAG_OFF (strict - prototypes ) /* Seen with homebrew mysql client 5.7.13 */
41- # include < mysql .h >
41+ # include < mysql / mysql .h >
4242DIAG_ON (strict - prototypes )
4343# include <mysql/mysqld_error.h>
4444#elif defined(HAVE_MYSQL_H )
@@ -160,8 +160,9 @@ static int _sql_socket_destructor(rlm_sql_mysql_conn_t *conn)
160160{
161161 DEBUG2 ("Socket destructor called, closing socket" );
162162
163- if (conn -> sock ){
163+ if (conn -> sock ) {
164164 mysql_close (conn -> sock );
165+ conn -> sock = NULL ;
165166 }
166167
167168 return 0 ;
@@ -419,20 +420,13 @@ static sql_rcode_t sql_check_error(MYSQL *server, int client_errno)
419420
420421static sql_rcode_t sql_query (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config , char const * query )
421422{
422- rlm_sql_mysql_conn_t * conn = handle -> conn ;
423+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
423424 sql_rcode_t rcode ;
424425 char const * info ;
425426
426- if (!conn -> sock ) {
427- ERROR ("Socket not connected" );
428- return RLM_SQL_RECONNECT ;
429- }
430-
431427 mysql_query (conn -> sock , query );
432428 rcode = sql_check_error (conn -> sock , 0 );
433- if (rcode != RLM_SQL_OK ) {
434- return rcode ;
435- }
429+ if (rcode != RLM_SQL_OK ) return rcode ;
436430
437431 /* Only returns non-null string for INSERTS */
438432 info = mysql_info (conn -> sock );
@@ -443,15 +437,10 @@ static sql_rcode_t sql_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t c
443437
444438static sql_rcode_t sql_store_result (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
445439{
446- rlm_sql_mysql_conn_t * conn = handle -> conn ;
440+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
447441 sql_rcode_t rcode ;
448442 int ret ;
449443
450- if (!conn -> sock ) {
451- ERROR ("Socket not connected" );
452- return RLM_SQL_RECONNECT ;
453- }
454-
455444retry_store_result :
456445 conn -> result = mysql_store_result (conn -> sock );
457446 if (!conn -> result ) {
@@ -471,8 +460,8 @@ static sql_rcode_t sql_store_result(rlm_sql_handle_t *handle, UNUSED rlm_sql_con
471460
472461static int sql_num_fields (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
473462{
463+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort (handle -> conn ,rlm_sql_mysql_conn_t );
474464 int num = 0 ;
475- rlm_sql_mysql_conn_t * conn = handle -> conn ;
476465
477466#if MYSQL_VERSION_ID >= 32224
478467 /*
@@ -514,18 +503,16 @@ static sql_rcode_t sql_select_query(rlm_sql_handle_t *handle, rlm_sql_config_t c
514503
515504static int sql_num_rows (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
516505{
517- rlm_sql_mysql_conn_t * conn = handle -> conn ;
506+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
518507
519- if (conn -> result ) {
520- return mysql_num_rows (conn -> result );
521- }
508+ if (conn -> result ) return mysql_num_rows (conn -> result );
522509
523510 return 0 ;
524511}
525512
526513static sql_rcode_t sql_fields (char const * * out [], rlm_sql_handle_t * handle , rlm_sql_config_t const * config )
527514{
528- rlm_sql_mysql_conn_t * conn = handle -> conn ;
515+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
529516
530517 unsigned int fields , i ;
531518 MYSQL_FIELD * field_info ;
@@ -556,7 +543,7 @@ static sql_rcode_t sql_fields(char const **out[], rlm_sql_handle_t *handle, rlm_
556543
557544static sql_rcode_t sql_fetch_row (rlm_sql_row_t * out , rlm_sql_handle_t * handle , rlm_sql_config_t const * config )
558545{
559- rlm_sql_mysql_conn_t * conn = handle -> conn ;
546+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
560547 sql_rcode_t rcode ;
561548 MYSQL_ROW row ;
562549 int ret ;
@@ -608,7 +595,7 @@ static sql_rcode_t sql_fetch_row(rlm_sql_row_t *out, rlm_sql_handle_t *handle, r
608595
609596static sql_rcode_t sql_free_result (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
610597{
611- rlm_sql_mysql_conn_t * conn = handle -> conn ;
598+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
612599
613600 if (conn -> result ) {
614601 mysql_free_result (conn -> result );
@@ -639,7 +626,7 @@ static sql_rcode_t sql_free_result(rlm_sql_handle_t *handle, UNUSED rlm_sql_conf
639626static size_t sql_warnings (TALLOC_CTX * ctx , sql_log_entry_t out [], size_t outlen ,
640627 rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
641628{
642- rlm_sql_mysql_conn_t * conn = handle -> conn ;
629+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
643630
644631 MYSQL_RES * result ;
645632 MYSQL_ROW row ;
@@ -705,11 +692,10 @@ static size_t sql_error(TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen,
705692 rlm_sql_handle_t * handle , rlm_sql_config_t const * config )
706693{
707694 rlm_sql_mysql_t * inst = talloc_get_type_abort (handle -> inst -> driver_submodule -> dl_inst -> data , rlm_sql_mysql_t );
708- rlm_sql_mysql_conn_t * conn = handle -> conn ;
695+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
709696 char const * error ;
710697 size_t i = 0 ;
711698
712- fr_assert (conn && conn -> sock );
713699 fr_assert (outlen > 0 );
714700
715701 error = mysql_error (conn -> sock );
@@ -719,7 +705,7 @@ static size_t sql_error(TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen,
719705 */
720706 if (error && (error [0 ] != '\0' )) {
721707 error = talloc_typed_asprintf (ctx , "ERROR %u (%s): %s" , mysql_errno (conn -> sock ), error ,
722- mysql_sqlstate (conn -> sock ));
708+ mysql_sqlstate (conn -> sock ));
723709 }
724710
725711 /*
@@ -774,7 +760,7 @@ static size_t sql_error(TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen,
774760static sql_rcode_t sql_finish_query (rlm_sql_handle_t * handle , rlm_sql_config_t const * config )
775761{
776762#if (MYSQL_VERSION_ID >= 40100 )
777- rlm_sql_mysql_conn_t * conn = handle -> conn ;
763+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
778764 int ret ;
779765 MYSQL_RES * result ;
780766
@@ -819,7 +805,7 @@ static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t c
819805
820806static int sql_affected_rows (rlm_sql_handle_t * handle , UNUSED rlm_sql_config_t const * config )
821807{
822- rlm_sql_mysql_conn_t * conn = handle -> conn ;
808+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
823809
824810 return mysql_affected_rows (conn -> sock );
825811}
@@ -828,7 +814,7 @@ static size_t sql_escape_func(UNUSED request_t *request, char *out, size_t outle
828814{
829815 size_t inlen ;
830816 rlm_sql_handle_t * handle = talloc_get_type_abort (arg , rlm_sql_handle_t );
831- rlm_sql_mysql_conn_t * conn = handle -> conn ;
817+ rlm_sql_mysql_conn_t * conn = talloc_get_type_abort ( handle -> conn , rlm_sql_mysql_conn_t ) ;
832818
833819 /* Check for potential buffer overflow */
834820 inlen = strlen (in );
0 commit comments