[freetds] connect(2) for UDP
Peter Deacon
peterd at iea-software.com
Wed Dec 17 14:24:01 EST 2008
On Wed, 17 Dec 2008, James K. Lowden wrote:
> Possible conditions:
> 1. gethostbyname() fails. Don't try 1434.
> 2. connect/write/read to 1434 succeeds. Hurrah!
> 3. connect/write/read to 1434 yields ECONNREFUSED. Named instances
> unsupported.
> 4. connect/write/read to 1434 times out. Host down *or* host responding
> from different interface.
> Well, first try connected. It's quicker if it works, and it establishes
> (#3) whether or not anyone's listening to 1434.
> For autodetection, for #4 I would assume the host is down, because
> retrying is too slow (especially if it's actually a 5.0 server). But if,
> say, freetds.conf had "port = AUTO", then I'd try unconnected UDP. I'm
> also tempted to fork(2) and try both at the same time. (The child could
> write the results to the parent via a pipe.)
Recommend using bind() rather than connect() with UDP. With bind you
still get ICMP indiciations for fast failure when send()ing.
Have Fun!
Peter
More information about the FreeTDS
mailing list