Problem was in function sql_query: function sql_check_error must be called
with mysql_errno as argument, but was with return value of mysql_query, which
return -1 if query just failed.
attached patch should correct descibed above problem :)
On Wed, Jul 24, 2002 at 09:17:42AM +0500, [EMAIL PROTECTED] wrote:
> Hi!
> I have installed freeradius snapshot (20020722) with rlm_sql module which
> connect to mysql v3.23.44.
> I have test it with default accounting queries and promlem is next:
> when query fail (because duplicate key should be insterted, for example),
> mysql_query in sql_query return -1, so sql_check_error return SQL_DOWN,
> however socket is good. Then rlm_sql try to open socket again, but doesn't
> shutdown existing socket, so after number failed queries radiusd open
> lot of sql sockets.
> Of course, I fix it for me :), but, possibly, radius should shutdown
> socket before re-connect or correctly check
> mysql return codes in main stream?
>
> --
> Denis Tatarskikh [UdSU/MF] [UdSU/IC] mailto:[EMAIL PROTECTED]
--
Denis Tatarskikh [UdSU/MF] [UdSU/IC] mailto:[EMAIL PROTECTED]
diff -aNur
freeradius-snapshot-20020722.orig/src/modules/rlm_sql/drivers/rlm_sql_mysql/sql_mysql.c
freeradius-snapshot-20020722/src/modules/rlm_sql/drivers/rlm_sql_mysql/sql_mysql.c
---
freeradius-snapshot-20020722.orig/src/modules/rlm_sql/drivers/rlm_sql_mysql/sql_mysql.c
Wed Jul 24 13:59:33 2002
+++ freeradius-snapshot-20020722/src/modules/rlm_sql/drivers/rlm_sql_mysql/sql_mysql.c
+ Wed Jul 24 14:00:41 2002
@@ -100,8 +100,8 @@
radlog(L_ERR, "Socket not connected");
return SQL_DOWN;
}
-
- return sql_check_error(mysql_query(mysql_sock->sock, querystr));
+ mysql_query(mysql_sock->sock, querystr);
+ return sql_check_error(mysql_errno(mysql_sock->sock));
}