Re: [tcpdump-workers] pcap_loop() not returning after pcap_breakloop() until another packet arrives

2006-06-26 Thread Guy Harris


On Jun 24, 2006, at 10:50 PM, Richard Hansen wrote:

I have one thread that sits in pcap_loop() and another thread that  
calls pcap_breakloop() when it is time to shut down.  My code works  
well on Windows (WinPcap 3.1).


Well, sort of.  I suspect that pcap_breakloop() doesn't *immediately*  
break you out of the loop - it's probably delayed until a packet  
arrives *or* the timeout expires.


  On Linux (libpcap 0.9.4, kernel 2.6.16) the pcap_loop() doesn't  
return after calling pcap_breakloop() until another packet  
arrives.  Is this expected or proper behavior?


Expected, yes.  Linux's packet capture mechanism doesn't have the  
timeouts that the WinPcap driver, BPF, etc. do.


  How can I tell Linux to return from that readfrom() call that  
it's blocking on?


You *might* be able to do it with pthread_cancel(), although that  
will, ultimately, terminate the thread (unless a cleanup handler  
never returns).

-
This is the tcpdump-workers list.
Visit https://lists.sandelman.ca/ to unsubscribe.


[tcpdump-workers] pcap_loop() not returning after pcap_breakloop() until another packet arrives

2006-06-25 Thread Richard Hansen
Hi all,

I have one thread that sits in pcap_loop() and another thread that calls 
pcap_breakloop() when it is time to shut down.  My code works well on Windows 
(WinPcap 3.1).  On Linux (libpcap 0.9.4, kernel 2.6.16) the pcap_loop() doesn't 
return after calling pcap_breakloop() until another packet arrives.  Is this 
expected or proper behavior?  How can I tell Linux to return from that 
readfrom() call that it's blocking on?

Thank you!

Richard


-
This is the tcpdump-workers list.
Visit https://lists.sandelman.ca/ to unsubscribe.