[freetds] Connection life

ZIGLIO, Frediano, VF-IT Frediano.Ziglio at vodafone.com
Thu Nov 24 03:03:02 EST 2005


> 
> Hello, I have a question about connection and disconnection. 
> How can I 
> detect if a network connection is dead using db-lib? I have 
> seen that there 
> is a function called  dbdead, but this function does not 
> check  if the 
> network socket is alive ( I use  MS Sql Server), it never 
> connects to the 
> server... I need this because I have a connection pooling and 
> I havte to 
> detect connections dead to reconnect if it is needed, I keep 
> the connection 
> without calling a dbclose for a long time. But if the dbdead 
> does not check 
> the socket the result of calling dbdead is not reliable.
> How can I solve this problem?
> 
> Thanks...
> 

I don't know if even tcp support this. Current version use keep alive in
socket but I don't know if there is a way to read error like using
select on error with timeout == 0 or use recv with zero bytes or reading
error with getsockopt/SO_ERROR...
However I would suggest to close connections if they are idle for a long
time (some minutes), closing unused connection can free memory on mssql
side and prevent potential locks.

freddy77


More information about the FreeTDS mailing list