summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864>2008-12-17 19:22:35 +0000
committerrburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864>2008-12-17 19:22:35 +0000
commitb4b2a7bd1b80c4b8e31cfb8adb7e33a08051260d (patch)
tree2bc6baeecf859a26590cdec75598a4b77167f907
parentb9b70be010db39bae3ca79e7cc2a5a405fbefb09 (diff)
Forward-port 0f3414de39df90405cf6c98a51194e957e8e5afa from 1.8: don't set +d when setting svid on a user w/ unreal protocol.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1830 5417fbe8-f217-4b02-8779-1006273d7864
-rw-r--r--src/protocol/unreal32.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c
index 97e523e44..acfcc8c73 100644
--- a/src/protocol/unreal32.c
+++ b/src/protocol/unreal32.c
@@ -555,7 +555,15 @@ class UnrealIRCdProto : public IRCDProto
if (ac <= 0) break;
--ac;
++av;
- if (av) user->svid = strtoul(*av, NULL, 0);
+ if (av)
+ user->svid = strtoul(*av, NULL, 0);
+
+ /* Unreal annoyingly uses +d for deaf as well as svid, so if a svid was set, unset +d (this actually means that
+ * in practice, we could lose someone's svid if they set +d after identifying, so this fix is crap)
+ * XXX: fix it better
+ */
+ if (user->svid)
+ user->mode &= ~UMODE_d;
break;
case 'o':
if (add) {