All pastes #196617 Raw Edit

Mine

public text v1 · immutable
·published 2006-10-10 19:18 UTC
rendered paste body
bool CWoWSniffer::StartTheSniffer()
{
	if (!IsSniffing)
	{
		hSniffingThread = CreateThread(0, 0, (PTHREAD_START_ROUTINE)StartSniffingThread, (void*)this, 0, 0);
		if (!hSniffingThread)
			return false;

		IsSniffing = true;
		LogToFile("Sniffing session started.\r\n");
		LogToControl(hDataLog, "Sniffing sesssion started.\r\n");

		GetWindowText(m_hWnd, WindowTitle, sizeof(WindowTitle));
		char buffer[128];
		strcpy(buffer, WindowTitle);
		strcat(buffer, " - Sniffing started.");
		SetWindowText(m_hWnd, buffer);

		ShowWindow(hStatusIdle, SW_HIDE);
		ShowWindow(hStatusSniffing, SW_SHOW);

		// Clear data in listview / packet data edit control
		SendMessage(hListView, LVM_DELETEALLITEMS, 0, 0);
		SendMessage(hDataPacket, WM_SETTEXT, 0, 0);
		return true;
	}
	return false;
}

void CWoWSniffer::StartSniffingThread(void* param)
{
	assert(param);
	CWoWSniffer* instance = (CWoWSniffer*)param;

	if (!instance->GetSnifferInfo(&instance->info))
	{
		instance->ShowError("GetSnifferInfo()", instance->GetHWND(), MB_ICONERROR, "Failed to start sniffing.\r\n");
		instance->LogToFile("Sniffing session aborted by fatal error.\r\n");
		instance->LogToControl(GetDlgItem(instance->GetHWND(), IDE_DATA_LOG), "Sniffing session aborted by fatal error.\r\n");
		instance->IsSniffing = false;
		ExitThread(GetLastError());
	}

	char filter[1024];
	if (isdigit(instance->info.IP[0]))
		sprintf(filter, "net %s and (port %d or %d)", instance->info.IP, instance->info.RealmPort, instance->info.WorldPort);
	else
		sprintf(filter, "host %s and (port %d or %d)", instance->info.IP, instance->info.RealmPort, instance->info.WorldPort);

	if (!instance->Sniffer->StartSniffing(filter, instance->info.DeviceName, instance->info.DeviceNumber, instance->hListView))
	{
		instance->ShowError("StartTheSniffing()", instance->GetHWND(), MB_ICONERROR);
		instance->StopTheSniffer();
		instance->LogToFile("Sniffing session aborted by fatal error.\r\n");
		instance->LogToControl(GetDlgItem(instance->GetHWND(), IDE_DATA_LOG), "Sniffing session aborted by fatal error.\r\n");
	}
	ExitThread(GetLastError());
}