Redundant SQL servers accounting problem, FreeRadius 1.1.4
Alan DeKok
aland at deployingradius.com
Wed Mar 21 12:57:46 CET 2007
Alexander V. Klepikov wrote:
>... If connection to DB fails, PQfinish(pg_sock->conn) is called, which frees
> pg_sock->conn - need to do this is described in libpq docs. So even in case
> of unsuccessefull connection we have good "database handle" sqlsocket->conn,
> which should not be NULL.
If pg_sock->conn is freed, that pointer MUST be set to NULL.
> According to this, I can make a conclusion that when database handle is
> checked for connectivity (in rlm_sql module), sqlsocket->state should be
> used.
No. sqlsocket->state is redundant. If the "conn" handle exists, it
MUST be a valid connection handle. If it's not valid, it's NULL, and
therefore the socket is disconnected.
> In theory, sqlsocket->state can equals to sockconnected when actually
> it is disconnected.
That's a bug. It's wrong and MUST be fixed.
> It seemes to me, actually this can happen very rarely.
> May be, state of connection should be checked before running every SQL query
> to minimize risk of operation on disconnected DB, but I believe it's not
> necessary yet. Besides, it will require to modify all sql drivers.
Then we modify all of the SQL drivers.
Alan DeKok.
--
http://deployingradius.com - The web site of the book
http://deployingradius.com/blog/ - The blog
More information about the Freeradius-Users
mailing list