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';
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;
}
#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;