在看FileZilla源代码的时候,发现有几个函数始终搞不懂是什么含义,特来请教void CControlSocket::AntiHammerIncrease(int amount /*=1*/)
{
if (amount == 25)
amount=25;
if (m_status.hammerValue < 8000)                  // 始终没搞明白hammerValue的含义
m_status.hammerValue += amount * 200;    // 也不明白这个函数的意义 if (m_status.hammerValue > 2000)
m_antiHammeringWaitTime += 1000 * (int)pow(1.3, (m_status.hammerValue / 400) - 5);
}void CServerThread::AntiHammerIncrease(DWORD ip)
{
EnterCritSection(m_GlobalThreadsync); std::map<DWORD, int>::iterator iter = m_antiHammerInfo.find(ip);
if (iter != m_antiHammerInfo.end())
{
if (iter->second < 20)
iter->second++;
LeaveCritSection(m_GlobalThreadsync);
return;
}
if (m_antiHammerInfo.size() >= 1000)
{
std::map<DWORD, int>::iterator best = m_antiHammerInfo.begin();
for (iter = m_antiHammerInfo.begin(); iter != m_antiHammerInfo.end(); iter++)
{
if (iter->second < best->second)
best = iter;
}
m_antiHammerInfo.erase(best);
}
m_antiHammerInfo.insert(std::map<DWORD, int>::value_type(ip, 1)); LeaveCritSection(m_GlobalThreadsync);
}