diff --git a/modules/imapauth.cpp b/modules/imapauth.cpp index a17e85fd..944e505a 100644 --- a/modules/imapauth.cpp +++ b/modules/imapauth.cpp @@ -134,7 +134,7 @@ void CIMAPSock::ReadLine(const CString& sLine) { } Write("AUTH LOGIN " + sUsername + " " + m_spAuth->GetPassword() + "\r\n"); - } else { + } else if (sLine.Left(5) == "AUTH ") { CUser* pUser = CZNC::Get().FindUser(m_spAuth->GetUsername()); if (pUser && sLine.Equals("AUTH OK", false, 7)) { diff --git a/src/IRCSock.cpp b/src/IRCSock.cpp index 7d6b2f41..e5f988e9 100644 --- a/src/IRCSock.cpp +++ b/src/IRCSock.cpp @@ -330,10 +330,14 @@ void CIRCSock::ReadLine(const CString& sData) { // The client doesn't support multi-prefix so we need to remove // the other prefixes. - CString sNewLine = sServer + " 352 " + sLine.Token(2) + " " + \ - sLine.Token(3) + " " + sIdent + " " + sHost + " " + \ - sLine.Token(6) + " " + sNick[0] + \ - sNick.substr(sNick.find_first_not_of(GetPerms())) + " " + \ + CString sNewNick = sNick; + size_t pos = sNick.find_first_not_of(GetPerms()); + if (pos >= 2 && pos != CString::npos) { + sNewNick = sNick[0] + sNick.substr(pos); + } + CString sNewLine = sServer + " 352 " + sLine.Token(2) + " " + + sLine.Token(3) + " " + sIdent + " " + sHost + " " + + sLine.Token(6) + " " + sNewNick + " " + sLine.Token(8, true); m_pNetwork->PutUser(sNewLine, pClient); }