From 10e21bfedaa5aea8a3b3565b596de2dd25230f53 Mon Sep 17 00:00:00 2001 From: Adam Date: Thu, 25 Oct 2012 01:30:41 -0400 Subject: [PATCH] Fix handling clients on unreal that have no ip (it sends a *) --- modules/protocol/unreal.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/protocol/unreal.cpp b/modules/protocol/unreal.cpp index aab6ae32d..25f030535 100644 --- a/modules/protocol/unreal.cpp +++ b/modules/protocol/unreal.cpp @@ -776,8 +776,14 @@ struct IRCDMessageNick : IRCDMessage Anope::string decoded_ip; Anope::B64Decode(params[9], decoded_ip); - sockaddrs ip; - ip.ntop(params[9].length() == 8 ? AF_INET : AF_INET6, decoded_ip.c_str()); + Anope::string ip; + try + { + sockaddrs ip_addr; + ip_addr.ntop(params[9].length() == 8 ? AF_INET : AF_INET6, decoded_ip.c_str()); + ip = ip_addr.addr(); + } + catch (const SocketException &ex) { } Anope::string vhost = params[8]; if (vhost.equals_cs("*")) @@ -785,7 +791,7 @@ struct IRCDMessageNick : IRCDMessage time_t user_ts = params[2].is_pos_number_only() ? convertTo(params[2]) : Anope::CurTime; - User *user = new User(params[0], params[3], params[4], vhost, ip.addr(), source.GetServer(), params[10], user_ts, params[7]); + User *user = new User(params[0], params[3], params[4], vhost, ip, source.GetServer(), params[10], user_ts, params[7]); const NickAlias *na = NULL;