18,356
社区成员
发帖
与我相关
我的任务
分享
WSAAccept(pThis->m_socListen,NULL,&nLen,ConnectAcceptCondition,(DWORD)pThis);
int CALLBACK IOCPS::ConnectAcceptCondition(IN LPWSABUF lpCallerId,
IN LPWSABUF lpCallerData,
IN OUT LPQOS lpSQOS,
IN OUT LPQOS lpGQOS,
IN LPWSABUF lpCalleeId,
OUT LPWSABUF lpCalleeData,
OUT GROUP FAR *g,
IN DWORD dwCallbackData)
{
sockaddr_in* pCaller=(sockaddr_in*)lpCallerId->buf;
sockaddr_in* pCallee=(sockaddr_in*)lpCalleeId->buf;
IOCPS* pThis = reinterpret_cast<IOCPS*>(dwCallbackData);
// Do not take connections from ourself.
/* if ( pCaller->sin_addr.S_un.S_addr == inet_addr("127.0.0.1") )
{
return CF_REJECT;
}
*/
if ( pThis->IsInBannedList(pCaller) || pThis->IsAlreadyConnected(pCaller) )
{
//
// Do not send ACK, the attacker do not know if the server
// exist or not.
//
return CF_REJECT;
}
return CF_ACCEPT;
}