Re: libsoup and IPv6
- From: "W. Michael Petullo" <mike flyn org>
- To: Dan Winship <danw gnome org>
- Cc: libsoup-list gnome org
- Subject: Re: libsoup and IPv6
- Date: Wed, 5 Jan 2011 20:28:06 -0600
>> addr = soup_address_new_any (addr_family, port);
>> share->priv->server = soup_server_new (SOUP_SERVER_INTERFACE, addr, NULL);
>>
>> What I am finding is that if addr_family is SOUP_ADDRESS_FAMILY_IPV4,
>> then the server is available using IPv4. However, if I use
>> SOUP_ADDRESS_FAMILY_IPV6, then the server is available using *both*
>> IPv4 and v6. I guess I would expect the latter to be IPv6 only.
>>
>> I think the behavior that I am seeing will make things more convenient
>> for me. I just want to make sure I am not doing anything wrong. Where is
>> it documented that SOUP_ADDRESS_FAMILY_IPV6 means that the service will
>> be available on both IPv4 and IPv6? Or am I interpreting this incorrectly?
> This is an optional feature of the IPv6 sockets API, which Linux
> implements and most other OSes don't. (Or rather, it's run-time
> configurable via a sysctl, and it defaults to "on" on Linux and "off"
> everywhere else.) If you get an IPv4 connection on the socket, the
> address will be returned to you as a v6-wrapped IPv4 address (ie,
> IN6_IS_ADDR_V4MAPPED() on the in6_addr will return TRUE).
>
> For maximum compatibility, you should create the IPv6 socket first, and
> then try to create an IPv4 socket too on the same port, but if that
> fails, assume it's because the IPv6 socket is listening on both ports.
>
> There may be some more explicit API around this in the future (eg, gio's
> g_socket_speaks_ipv4()).
Is it possible to have a single SoupServer object service HTTP requests
on both IPv4 and IPv6 sockets in the abscence of this optional IPv6
socket feature? Or, would we need to call soup_server_new twice, once
for IPv6 and once for IPv4? The documentation appears to indicate
the latter.
--
Mike
:wq
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]