X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Flistener.c;h=a3c9e93785e2fd3ce4a302c3a3ca99323e9d8d94;hb=1570a04e15bec6b2945e4351b1e05211aecdcacc;hp=31d1ba5e9f8d8cade2a192eec806ba6ee83badfe;hpb=dcecf316a0813ae009af5aaa2ca938a53c1a3835;p=ircu2.10.12-pk.git diff --git a/ircd/listener.c b/ircd/listener.c index 31d1ba5..a3c9e93 100644 --- a/ircd/listener.c +++ b/ircd/listener.c @@ -147,8 +147,24 @@ void show_ports(struct Client* sptr, const struct StatDesc* sd, continue; len = 0; flags[len++] = listener_server(listener) ? 'S' : 'C'; - if (show_hidden && FlagHas(&listener->flags, LISTEN_HIDDEN)) + if (FlagHas(&listener->flags, LISTEN_HIDDEN)) + { + if (!show_hidden) + continue; flags[len++] = 'H'; + } + if (FlagHas(&listener->flags, LISTEN_IPV4)) + { + flags[len++] = '4'; + if (listener->fd_v4 < 0) + flags[len++] = '-'; + } + if (FlagHas(&listener->flags, LISTEN_IPV6)) + { + flags[len++] = '6'; + if (listener->fd_v6 < 0) + flags[len++] = '-'; + } flags[len] = '\0'; send_reply(sptr, RPL_STATSPLINE, listener->addr.port, listener->ref_count, @@ -303,7 +319,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; @@ -318,7 +335,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;