imapauth: Follow RFC more closely

The IMAP RFC allows the server to announce its capabilities before replying to
the LOGIN command. imapauth would misinterpret that as a failed login.

The fix is to only handle lines which contain the tag ("AUTH") used for the
login command.

Thanks to rlpowell for reporting that imapauth doesn't work against
imap.google.com and for testing the fix.

Signed-off-by: Uli Schlachter <psychon@znc.in>
This commit is contained in:
Uli Schlachter
2012-03-30 23:15:57 +02:00
parent d5b84f50db
commit ed5610f363
+1 -1
View File
@@ -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)) {