From f1bd70418237c8335bc0becc1d2543a5ce5e4ac2 Mon Sep 17 00:00:00 2001 From: Daniel De Graaf Date: Fri, 3 Sep 2010 23:05:21 -0400 Subject: Fix resolved hostname being cropped when WEBIRC passes a hostname longer than 64 characters --- src/modules/m_cgiirc.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'src/modules/m_cgiirc.cpp') diff --git a/src/modules/m_cgiirc.cpp b/src/modules/m_cgiirc.cpp index b9f2fbf05..8aaee579f 100644 --- a/src/modules/m_cgiirc.cpp +++ b/src/modules/m_cgiirc.cpp @@ -305,20 +305,23 @@ public: virtual void OnUserConnect(User* user) { std::string *webirc_hostname, *webirc_ip; - if(user->GetExt("cgiirc_webirc_hostname", webirc_hostname)) - { - user->host.assign(*webirc_hostname, 0, 64); - user->dhost.assign(*webirc_hostname, 0, 64); - delete webirc_hostname; - user->InvalidateCache(); - user->Shrink("cgiirc_webirc_hostname"); - } if(user->GetExt("cgiirc_webirc_ip", webirc_ip)) { ServerInstance->Users->RemoveCloneCounts(user); user->SetSockAddr(user->GetProtocolFamily(), webirc_ip->c_str(), user->GetPort()); delete webirc_ip; user->InvalidateCache(); + if(user->GetExt("cgiirc_webirc_hostname", webirc_hostname) && webirc_hostname->length() < 64) + { + user->host = *webirc_hostname; + user->dhost = *webirc_hostname; + delete webirc_hostname; + } + else + { + user->host = user->dhost = user->GetIPString(); + } + user->Shrink("cgiirc_webirc_hostname"); user->Shrink("cgiirc_webirc_ip"); ServerInstance->Users->AddLocalClone(user); ServerInstance->Users->AddGlobalClone(user); -- cgit v1.3.1-10-gc9f91