diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/protocol/unreal32.c | 11 | ||||
| -rw-r--r-- | src/users.c | 7 |
2 files changed, 8 insertions, 10 deletions
diff --git a/src/protocol/unreal32.c b/src/protocol/unreal32.c index 8ecfc90e9..77c618184 100644 --- a/src/protocol/unreal32.c +++ b/src/protocol/unreal32.c @@ -489,8 +489,7 @@ void unreal_set_umode(User * user, int ac, char **av) } break; case 'x': - if (!add) - { + if (!add) { if (user->vhost) free(user->vhost); user->vhost = NULL; @@ -1403,7 +1402,13 @@ int anope_event_sethost(char *source, int ac, char **av) return MOD_CONT; } - change_user_host(u, av[0]); + if (u->mode & UMODE_x) + change_user_host(u, av[0]); + else { + if (u->chost) + free(u->chost); + u->chost = sstrdup(av[0]); + } return MOD_CONT; } diff --git a/src/users.c b/src/users.c index e55a68696..fac248dbb 100644 --- a/src/users.c +++ b/src/users.c @@ -636,13 +636,6 @@ User *do_nick(const char *source, char *nick, char *username, char *host, user->realname = sstrdup(realname); user->timestamp = ts; user->my_signon = time(NULL); - /* Initially set both the vhost and cloaked host to the users cloaked host, vhost will be changed - * later if they get a real vhost, chost however should *never* be changed to anything else. - * It is possible that on most IRCds (Unreal) a server splits and then comes back, reintroducing clients - * with a vhost (not a cloaked host) and never informing Anope about the real cloaked host. For now I'm - * leaving this open (we should prboably request a USERHOST or so) as this won't occur that much, and any - * fixes to this problem are ugly. - Adam - */ user->chost = vhost ? sstrdup(vhost) : sstrdup(host); user->vhost = vhost ? sstrdup(vhost) : sstrdup(host); if (uid) { |
