[freetds] threadsafe

Patrick Welche prlw1 at newn.cam.ac.uk
Wed Aug 23 07:03:18 EDT 2006


On Tue, Aug 22, 2006 at 08:23:00PM +0200, Frediano Ziglio wrote:
> Il giorno mar, 22/08/2006 alle 18.29 +0100, Patrick Welche ha scritto:
> > It seems that --disable-threadsafe has no effect:
> > 
> > threadsafe.c:279:2: error: #error gethostbyname_r style unknown
> > 
> > i.e., threadsafe.c is compiled, and the _r functions tried.
> > 
> > It may be that defining NETDB_REENTRANT if --disable-threadsafe may be
> > sufficient to fix it - I haven't tried.
> > 
> 
> yes, actually --disable-threadsafe has the only effect to not define
> _REENTRANT and _THREAD_SAFE, perhaps defining NETDB_REENTRANT would
> help. Which platform are you using?
> 
> > 
> > .. I was wondering also whether getaddrinfo / getnameinfo would be worth
> > trying too..
> > 
> 
> Look at threadsafe.c you will find getaddrinfo.

Yes but :-)

I looked at threadsafe.c, and the problem function which is
tds_gethostbyname_r. The function will call gethostbyname,
getipnodebyname or gethostbyname_r. So, if your gethostbyname is
not reentrant, and you don't have getipnodebyname or gethostbyname_r,
compilation will fail even if you --disable-threadsafe. If you define
NETDB_REENTRANT, the non-threadsafe gethostbyname will be called, so
this is a work around. tds_gethostbyname_r does not try getaddrinfo.

Cheers,

Patrick



More information about the FreeTDS mailing list