#ifdef HAVE_MYSQL_MYSQL_H
# include <mysql/errmsg.h>
DIAG_OFF(strict-prototypes) /* Seen with homebrew mysql client 5.7.13 */
-# include <mysql.h>
+# include <mysql/mysql.h>
DIAG_ON(strict-prototypes)
# include <mysql/mysqld_error.h>
#elif defined(HAVE_MYSQL_H)
{
DEBUG2("Socket destructor called, closing socket");
- if (conn->sock){
+ if (conn->sock) {
mysql_close(conn->sock);
+ conn->sock = NULL;
}
return 0;
static sql_rcode_t sql_query(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config, char const *query)
{
- rlm_sql_mysql_conn_t *conn = handle->conn;
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
sql_rcode_t rcode;
char const *info;
- if (!conn->sock) {
- ERROR("Socket not connected");
- return RLM_SQL_RECONNECT;
- }
-
mysql_query(conn->sock, query);
rcode = sql_check_error(conn->sock, 0);
- if (rcode != RLM_SQL_OK) {
- return rcode;
- }
+ if (rcode != RLM_SQL_OK) return rcode;
/* Only returns non-null string for INSERTS */
info = mysql_info(conn->sock);
static sql_rcode_t sql_store_result(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
{
- rlm_sql_mysql_conn_t *conn = handle->conn;
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
sql_rcode_t rcode;
int ret;
- if (!conn->sock) {
- ERROR("Socket not connected");
- return RLM_SQL_RECONNECT;
- }
-
retry_store_result:
conn->result = mysql_store_result(conn->sock);
if (!conn->result) {
static int sql_num_fields(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
{
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
int num = 0;
- rlm_sql_mysql_conn_t *conn = handle->conn;
#if MYSQL_VERSION_ID >= 32224
/*
static int sql_num_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
{
- rlm_sql_mysql_conn_t *conn = handle->conn;
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
- if (conn->result) {
- return mysql_num_rows(conn->result);
- }
+ if (conn->result) return mysql_num_rows(conn->result);
return 0;
}
static sql_rcode_t sql_fields(char const **out[], rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
{
- rlm_sql_mysql_conn_t *conn = handle->conn;
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
unsigned int fields, i;
MYSQL_FIELD *field_info;
static sql_rcode_t sql_fetch_row(rlm_sql_row_t *out, rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
{
- rlm_sql_mysql_conn_t *conn = handle->conn;
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
sql_rcode_t rcode;
MYSQL_ROW row;
int ret;
static sql_rcode_t sql_free_result(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
{
- rlm_sql_mysql_conn_t *conn = handle->conn;
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
if (conn->result) {
mysql_free_result(conn->result);
static size_t sql_warnings(TALLOC_CTX *ctx, sql_log_entry_t out[], size_t outlen,
rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
{
- rlm_sql_mysql_conn_t *conn = handle->conn;
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
MYSQL_RES *result;
MYSQL_ROW row;
rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
{
rlm_sql_mysql_t *inst = talloc_get_type_abort(handle->inst->driver_submodule->dl_inst->data, rlm_sql_mysql_t);
- rlm_sql_mysql_conn_t *conn = handle->conn;
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
char const *error;
size_t i = 0;
- fr_assert(conn && conn->sock);
fr_assert(outlen > 0);
error = mysql_error(conn->sock);
*/
if (error && (error[0] != '\0')) {
error = talloc_typed_asprintf(ctx, "ERROR %u (%s): %s", mysql_errno(conn->sock), error,
- mysql_sqlstate(conn->sock));
+ mysql_sqlstate(conn->sock));
}
/*
static sql_rcode_t sql_finish_query(rlm_sql_handle_t *handle, rlm_sql_config_t const *config)
{
#if (MYSQL_VERSION_ID >= 40100)
- rlm_sql_mysql_conn_t *conn = handle->conn;
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
int ret;
MYSQL_RES *result;
static int sql_affected_rows(rlm_sql_handle_t *handle, UNUSED rlm_sql_config_t const *config)
{
- rlm_sql_mysql_conn_t *conn = handle->conn;
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
return mysql_affected_rows(conn->sock);
}
{
size_t inlen;
rlm_sql_handle_t *handle = talloc_get_type_abort(arg, rlm_sql_handle_t);
- rlm_sql_mysql_conn_t *conn = handle->conn;
+ rlm_sql_mysql_conn_t *conn = talloc_get_type_abort(handle->conn,rlm_sql_mysql_conn_t);
/* Check for potential buffer overflow */
inlen = strlen(in);