Skip to Content.
Sympa Menu

freetds - Re: [freetds] Multiple connection retries to the same IP address

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: Frediano Ziglio <freddy77 AT gmail.com>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] Multiple connection retries to the same IP address
  • Date: Mon, 18 Apr 2016 20:54:12 +0100

Well, if you want you can test it works as expected for you :)
Already pushed the patch.

Frediano


2016-04-18 20:23 GMT+01:00 Jan Blom <jan.blom AT peopleinteractive.se>:
> Excellent! Anything more I need to do?
>
>
> Best regards,
> Jan
>
> -----Original Message-----
> From: FreeTDS [mailto:freetds-bounces AT lists.ibiblio.org] On Behalf Of
> Frediano Ziglio
> Sent: den 18 april 2016 20:00
> To: FreeTDS Development Group
> Subject: Re: [freetds] Multiple connection retries to the same IP address
>
> 2016-04-18 17:56 GMT+01:00 Jan Blom <jan.blom AT peopleinteractive.se>:
>> Hello,
>>
>> I'm using FreeTDS 0.95 and have been puzzled why the connection timeout
>> setting seemed not to work. Digging into the problem I notice the same
>> target IP address always appear three times, for instance looking at the
>> config dump from osql. I have provided the fqdn name for the host in
>> freetds.conf.
>>
>> The FreeTDS implementation will loop over all IP addresses when trying to
>> connect if there is a failure. This results in a 3x total timeout duration
>> compared to the configuration. I cannot see a good reason for this logic,
>> given it is the same IP address in all three attempts.
>>
>> The reason is that the call to getaddrinfo (in tds/config.c) doesn't send
>> in any preference regarding address type. Therefore we get back something
>> like this:
>>
>> 1.
>> Family : AF_INET
>> Type : SOCK_STREAM
>> Protocol : IPPROTO_TCP
>> Socket address: ('23.235.43.223', 0)
>>
>> 2.
>> Family : AF_INET
>> Type : SOCK_DGRAM
>> Protocol : IPPROTO_UDP
>> Socket address: ('23.235.43.223', 0)
>>
>> 3.
>> Family : AF_INET
>> Type : SOCK_RAW
>> Protocol : IPPROTO_IP
>> Socket address: ('23.235.43.223', 0)
>>
>> However, later on , when we actually connect the socket we will use
>> SOCK_STREAM only. We don't care about UDP or raw sockets.
>>
>> My assumption would be that the tds_lookup_host() function should set
>> hints.ai_socktype = SOCK_STREAM;
>>
>> This will result in only #1 above in return.
>>
>> Does this make sense or am I missing something here?
>>
>>
>> Thanks for your time and support!
>> Jan Blom
>>
>
>
> Make sense. It's just that the change was quite recent, previously we took
> into account just the first address so we didn't had this issue.
> I think your suggestion should go as a patch.
>
> Frediano
> _______________________________________________
> FreeTDS mailing list
> FreeTDS AT lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/freetds
> _______________________________________________
> FreeTDS mailing list
> FreeTDS AT lists.ibiblio.org
> http://lists.ibiblio.org/mailman/listinfo/freetds




Archive powered by MHonArc 2.6.24.

Top of Page