diff options
-rw-r--r-- | src/protocol/plexus3.c | 25 | ||||
-rw-r--r-- | version.log | 6 |
2 files changed, 22 insertions, 9 deletions
diff --git a/src/protocol/plexus3.c b/src/protocol/plexus3.c index d658cf400..3bcc04b8c 100644 --- a/src/protocol/plexus3.c +++ b/src/protocol/plexus3.c @@ -1558,14 +1558,23 @@ plexus_cmd_svid_umode2 (User * u, char *ts) void plexus_cmd_svid_umode3 (User * u, char *ts) { - if (u->svid != u->timestamp) - { - common_svsmode (u, is_services_root (u) ? "+Nrd" : "+rd", ts); - } - else - { - common_svsmode (u, is_services_root (u) ? "+Nr" : "+r", NULL); - } + char modes[512]; + int len; + strncpy(modes,ircd->modeonreg,512); + len = strlen(ircd->modeonreg); + if(ircd->rootmodeonid && is_services_root(u)) { + strncat(modes,ircd->rootmodeonid,512-len); + } else if(ircd->adminmodeonid && is_services_admin(u)) { + strncat(modes,ircd->adminmodeonid,512-len); + } else if(ircd->opermodeonid && is_services_oper(u)) { + strncat(modes,ircd->opermodeonid,512-len); + } + if (u->svid != u->timestamp) { + strncat(modes,"d",1); + common_svsmode (u, modes, ts); + } else { + common_svsmode (u, modes, NULL); + } } /* NICK <newnick> */ diff --git a/version.log b/version.log index 3770de6c4..9987e2b29 100644 --- a/version.log +++ b/version.log @@ -9,10 +9,14 @@ VERSION_MAJOR="1" VERSION_MINOR="7" VERSION_PATCH="14" VERSION_EXTRA="" -VERSION_BUILD="1070" +VERSION_BUILD="1071" # $Log$ # +# BUILD : 1.7.14 (1071) +# BUGS : N/A +# NOTES : plexus3 now uses the ircd struct when deciding which modes to send for svid_umode3 calls +# # BUILD : 1.7.14 (1070) # BUGS : N/A # NOTES : Added N as a root mode on id for plexus3.c |