pcap_loop wartet noch auf ein paket
-
Hallo ich benutze libpcap (0.9.8) unter linux (2.6.23-gentoo-r3). Ich habe einen Thread der in pcap_loop() geht und dort auf bestimmte Pakete lauscht.
Wenn ich das Programm beende wird breakloop() benutzt und anschließend darauf gewartet(join), dass der Thread (der in pcap_loop() hängt) endet. Dann endet pcap_loop(), der Thread endet (durch Codeende) und fertig ist die Laube.
Ich habe allerdings feststellen müssen, dass pcap_loop nach der Benutzung von pcap_breakloop erst dann beendet, wenn noch ein Packet angekommen ist. Das finde ich nicht so prall... Irgendjemand eine Idee?
// gekürzt /* thread */ pcap_open_live (base->device, BUFSIZ, 1, 1000, errbuf); pcap_compile (base->T_gather_handle, &com_filter, filter, 0, net); pcap_setfilter (base->T_gather_handle, &com_filter); pcap_freecode(&com_filter); pcap_loop (base->T_gather_handle, -1, &incoming, (u_char *) dh); /* main */ pcap_breakloop (tinfo.T_gather_handle); pthread_join(this->thread_gather,NULL); // hier wird dann gewartet, weil der thread nich pcap_loop() verlässt
Ich spiele mit dem Gedanken einfach selbst vorher noch nen Packet loszujagen, aber das ich mir irgendwie zu work-around-mäßig unsauber...