From 294d32bf16a29c07dc70245ead10d4dd5743f616 Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Sun, 27 May 2012 22:46:24 +0200 Subject: [PATCH] If umode +D or +g are oper-only, don't advertise them in 005. --- src/supported.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/supported.c b/src/supported.c index 3a4ed074..24c1e3ed 100644 --- a/src/supported.c +++ b/src/supported.c @@ -78,6 +78,7 @@ #include "numeric.h" #include "ircd.h" #include "s_conf.h" +#include "s_user.h" #include "supported.h" #include "chmode.h" @@ -223,6 +224,15 @@ isupport_stringptr(const void *ptr) return *(char * const *)ptr; } +static const char * +isupport_umode(const void *ptr) +{ + const char *str; + + str = ptr; + return ConfigFileEntry.oper_only_umodes & user_modes[*str] ? NULL : str; +} + static const char * isupport_chanmodes(const void *ptr) { @@ -316,7 +326,7 @@ init_isupport(void) add_isupport("NETWORK", isupport_stringptr, &ServerInfo.network_name); add_isupport("KNOCK", isupport_boolean, &ConfigChannel.use_knock); add_isupport("STATUSMSG", isupport_string, "@+"); - add_isupport("CALLERID", isupport_string, "g"); + add_isupport("CALLERID", isupport_umode, "g"); add_isupport("CASEMAPPING", isupport_string, "rfc1459"); add_isupport("CHARSET", isupport_string, "ascii"); add_isupport("NICKLEN", isupport_nicklen, NULL); @@ -326,7 +336,7 @@ init_isupport(void) add_isupport("ETRACE", isupport_string, ""); add_isupport("CPRIVMSG", isupport_string, ""); add_isupport("CNOTICE", isupport_string, ""); - add_isupport("DEAF", isupport_string, "D"); + add_isupport("DEAF", isupport_umode, "D"); add_isupport("MONITOR", isupport_intptr, &ConfigFileEntry.max_monitor); add_isupport("FNC", isupport_string, ""); add_isupport("TARGMAX", isupport_targmax, NULL);