21.11.2014 13:11, Michal Kubecek wrote:
> On Fri, Nov 21, 2014 at 10:03:12AM +0200, Vlad Khorsun wrote:
>> 19.11.2014 16:08, Michal Kubecek пишет:
>>
>>> Could you check if first getaddrinfo() call returns EAI_FAMILY on
>>> Windows XP without IPv6 support? The way I read the manual page it
>>> should but I would rather make sure.
>>
>> On W2K3 without IPv6 i see that getaddrinfo() returns 0 and gai_result
>> contains one entry with ai_family == AF_INET6. But later, call to socket()
>> returns error 10047 (WSAEAFNOSUPPORT). Note, EAI_* codes is just an aliases
>> for WSA* codes. In this case WSAEAFNOSUPPORT is an real error code for
>> EAI_FAMILY.
>
> That's unfortunate... I suppose the easiest way out of this would be
> adding something like
>
> #ifdef WIN_NT
> if (!host_str && /* Windows version < Vista */)
> gai_hints.ai_family = AF_INET;
> #endif
>
> This should also take care of XP/2003 with IPv6 support (making the
> server listen on 0.0.0.0 by default).
I can commit function which checks if IPv6 support is present (it will
be based on WSAEnumProtocols). Can it help ?
>> BTW, always write OS error code with custom error message !
>
> You mean the number in addition to its text representation?
I mean that message like this
if (port->port_handle == INVALID_SOCKET)
{
gds__log("socket: error creating socket (family %d, socktype %d,
protocol %d",
pai->ai_family, pai->ai_socktype, pai->ai_protocol);
is missing important part - reason of failure ;)
Regards,
Vlad
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel