> listen_sockets[sk] = socket(AF_INET6, SOCK_STREAM, 0);
>+ if (listen_sockets[sk] < 0)
>+ {
>+ /* IPv6 socket creation failed: maybe this system doesn't support
>IPv6 */
>+ listen_sockets[sk] = socket(AF_INET, SOCK_STREAM, 0);
>+ }
> #else
> listen_sockets[sk] = socket(AF_INET, SOCK_STREAM, 0);
> #endif
Something like this is indeed needed, but I think you also need to keep
track of which protocol family you ended up using for the socket so that
it can be correctly bound a little later.
I have a feeling all is not 100% right with the code for outgoing IPv6
connections either. I started reworking some of this a couple of months back
but never finished the job.
p.
--
*** Exim information can be found at
http://www.exim.org/ ***