summaryrefslogtreecommitdiff
path: root/src/protocol/unreal32.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/protocol/unreal32.c')
-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) {