diff options
author | rburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-12-17 19:22:35 +0000 |
---|---|---|
committer | rburchell <rburchell@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-12-17 19:22:35 +0000 |
commit | b4b2a7bd1b80c4b8e31cfb8adb7e33a08051260d (patch) | |
tree | 2bc6baeecf859a26590cdec75598a4b77167f907 /src/protocol/unreal32.c | |
parent | b9b70be010db39bae3ca79e7cc2a5a405fbefb09 (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
Diffstat (limited to 'src/protocol/unreal32.c')
-rw-r--r-- | src/protocol/unreal32.c | 10 |
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) { |