diff options
| author | 2012-10-03 19:53:46 +0200 | |
|---|---|---|
| committer | 2012-10-03 20:36:20 +0200 | |
| commit | 4f9cc281d5f12ff1fdebc733b641c5e25cb460f9 (patch) | |
| tree | 6112d10629e365f226bef6c606dacb0c065b5533 /src/users.cpp | |
| parent | Change User::SetClientIP() to be virtual (diff) | |
Fix (d)host starting with ':' for some IPv6 clients
Diffstat (limited to 'src/users.cpp')
| -rw-r--r-- | src/users.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/users.cpp b/src/users.cpp index 29c670a66..eeb80ccc9 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -230,12 +230,18 @@ LocalUser::LocalUser(int myfd, irc::sockets::sockaddrs* client, irc::sockets::so /* * Initialize host and dhost here to the user's IP. * It is important to do this before calling SetClientIP() - * as that can pass execution to modules that expect these + * as that passes execution to modules that expect these * fields to be valid. + * + * We cannot call GetIPString() now as that will access + * client_sa, and that's only initialized after the first + * SetClientIP() call. */ int port; irc::sockets::satoap(*client, host, port); + if (host[0] == ':') + host.insert(0, 1, '0'); dhost = host; SetClientIP(*client); } |
