From: Michael Poole Date: Sun, 18 Mar 2007 02:33:02 +0000 (+0000) Subject: Do not try to listen on (corrupt) IPv4 versions of IPv6 native addresses. X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=commitdiff_plain;h=8fc1210b98a5dcc4d3ccb1e3c72886e005473f8d Do not try to listen on (corrupt) IPv4 versions of IPv6 native addresses. git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/branches/u2_10_12_branch@1783 c9e4aea6-c8fd-4c43-8297-357d70d61c8c --- diff --git a/ChangeLog b/ChangeLog index b931b81..1d4f807 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-03-17 Michael Poole + + * ircd/listener.c (add_listener): Only try to create IPv6 sockets + for IPv6-compatible addresses; likewise for IPv4. + 2007-03-17 Michael Poole * doc/example.conf (Operator): Update documentation to mention diff --git a/ircd/listener.c b/ircd/listener.c index 9fc285d..ee6bcc2 100644 --- a/ircd/listener.c +++ b/ircd/listener.c @@ -315,7 +315,8 @@ void add_listener(int port, const char* vhost_ip, const char* mask, listener->mask_bits = 0; #ifdef IPV6 - if (FlagHas(&listener->flags, LISTEN_IPV6)) { + if (FlagHas(&listener->flags, LISTEN_IPV6) + && (irc_in_addr_unspec(&vaddr) || !irc_in_addr_is_ipv4(&vaddr))) { if (listener->fd_v6 >= 0) { set_listener_options(listener, listener->fd_v6); okay = 1; @@ -330,7 +331,8 @@ void add_listener(int port, const char* vhost_ip, const char* mask, } #endif - if (FlagHas(&listener->flags, LISTEN_IPV4)) { + if (FlagHas(&listener->flags, LISTEN_IPV4) + && (irc_in_addr_unspec(&vaddr) || irc_in_addr_is_ipv4(&vaddr))) { if (listener->fd_v4 >= 0) { set_listener_options(listener, listener->fd_v4); okay = 1;