コード例 #1
0
ファイル: dnsrecorder.cpp プロジェクト: dreamsxin/PcManager
BOOL KDnsRecorder::RecordSend( 
	PROTO_TYPE pt,
	DWORD uLocalIp,
	USHORT uLocalPort,
	DWORD uRemoteIP,
	USHORT uRemotePort,
	PVOID pData, 
	DWORD uDataLen )
{
	DNS_HEADER* pDns = NULL;

	do 
	{
		if( uDataLen <= sizeof(DNS_HEADER) )
			break;
		
		if( uRemotePort != 53 )
			break;

		pDns = (DNS_HEADER*)pData;
		if( !IsValidRequest(pDns) )
			break;
		
		//只有本机向外发送过DNS请求,才解析. 
		//TODO: 多线程加锁
		m_sendDnsTansID.insert( pDns->id );

	} while (FALSE);

	return FALSE;
}
コード例 #2
0
ファイル: common.c プロジェクト: mbeitchman/simple-web-server
uint HTTPRequestBuffer::AddData(char* buffer, uint bsize, bool* isValid)
{
	if(bsize == 0 || isValid == NULL)
	{
		return 0;
	}

	if(requestBuffer == NULL)
	{
		requestBuffer = (char*)malloc(sizeof(char)*bsize);
		memcpy(requestBuffer, buffer, bsize);
	}
	else
	{
		requestBuffer = (char*)realloc(requestBuffer, requestBufferSize+bsize);
		memcpy(requestBuffer, buffer, bsize);
	}

	requestBufferSize += bsize;

	*isValid = IsValidRequest();

	return bsize;

}