Re: [Exim] [BUG?] 3.32: IPv6 changes cause Exim to not start

Etusivu
Poista viesti
Vastaa
Lähettäjä: Philip Blundell
Päiväys:  
Vastaanottaja: Phil Brutsche
Kopio: exim-users
Aihe: Re: [Exim] [BUG?] 3.32: IPv6 changes cause Exim to not start
>50 accept() failures: Invalid argument

Huh. Seems that Linux takes exception to listening on the same port for both
IPv6 and IPv4 wildcard addresses.

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 0
setsockopt(0, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(0, {sin_family=AF_INET, sin_port=htons(25), sin_addr=inet_addr("0.0.0.0")}}
, 16) = 0
socket(PF_INET6, SOCK_STREAM, 0)        = 1
setsockopt(1, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(1, {sin_family=AF_INET6, sin6_port=htons(25), inet_pton(AF_INET6, "::", &si
n6_addr), sin6_flowinfo=htonl(0)}}, 28) = 0
listen(0, 5)                            = 0
listen(1, 5)                            = -1 EADDRINUSE (Address already in use)
[...]
select(2, [0 1], NULL, NULL, NULL)      = 1 (in [1])
accept(1, 0xbfffef78, [28])             = -1 EINVAL (Invalid argument)


I don't know what you can do about this, other than reverting to the old
behaviour of only opening an IPv6 socket and using that for both protocol
families. Or maybe the kernel has some way to disconnect the v4 mapping
feature on a per socket basis.

p.