Fix #631: ZNC fails at finding an available nick name

This commit is contained in:
J-P Nurmi
2014-08-19 17:59:40 +02:00
parent acaf44f7d5
commit e6a7bbab75

View File

@@ -1296,22 +1296,22 @@ void CIRCSock::SendAltNick(const CString& sBadNick) {
const CString& sConfNick = m_pNetwork->GetNick();
const CString& sAltNick = m_pNetwork->GetAltNick();
CString sNewNick;
CString sNewNick = sConfNick.Left(uMax - 1);
if (sLastNick.Equals(sConfNick)) {
if ((!sAltNick.empty()) && (!sConfNick.Equals(sAltNick))) {
sNewNick = sAltNick;
} else {
sNewNick = sConfNick.Left(uMax - 1) + "-";
sNewNick += "-";
}
} else if (sLastNick.Equals(sAltNick)) {
sNewNick = sConfNick.Left(uMax -1) + "-";
} else if (sLastNick.Equals(CString(sConfNick.Left(uMax -1) + "-"))) {
sNewNick = sConfNick.Left(uMax -1) + "|";
} else if (sLastNick.Equals(CString(sConfNick.Left(uMax -1) + "|"))) {
sNewNick = sConfNick.Left(uMax -1) + "^";
} else if (sLastNick.Equals(CString(sConfNick.Left(uMax -1) + "^"))) {
sNewNick = sConfNick.Left(uMax -1) + "a";
} else if (sLastNick.Equals(sAltNick) && !sAltNick.Equals(sNewNick + "-")) {
sNewNick += "-";
} else if (sLastNick.Equals(sNewNick + "-") && !sAltNick.Equals(sNewNick + "|")) {
sNewNick += "|";
} else if (sLastNick.Equals(sNewNick + "|") && !sAltNick.Equals(sNewNick + "^")) {
sNewNick += "^";
} else if (sLastNick.Equals(sNewNick + "^") && !sAltNick.Equals(sNewNick + "a")) {
sNewNick += "a";
} else {
char cLetter = 0;
if (sBadNick.empty()) {
@@ -1329,6 +1329,8 @@ void CIRCSock::SendAltNick(const CString& sBadNick) {
}
sNewNick = sConfNick.Left(uMax -1) + ++cLetter;
if (sNewNick.Equals(sAltNick))
sNewNick = sConfNick.Left(uMax -1) + ++cLetter;
}
PutIRC("NICK " + sNewNick);
m_Nick.SetNick(sNewNick);