<font color="#0000ff" size="2">
<div><font color="#000000">I'm wrapping pcap for use in .net (using framework 2.0) and i have this function :</font></div>
<div>&nbsp;</div>
<div>void</div></font><font size="2"> PcapInstance::setDumpFile(char* dumpFileStr) </font>
<div><font size="2">{</font></div>
<div><font size="2">&nbsp;</font></div>
<div>pcap_dumper_t* oldDumpFile = dumpFile;</div>
<div><font color="#008000" size="2">//Prepare the new dumpfile</font></div>
<div><font size="2">pcap_dumper_t* newDumpFile = pcap_dump_open(pcapInstance, dumpFileStr);</font></div>
<div><font color="#008000" size="2">//Do the switch before closing the old one, if it exists</font></div>
<div><font size="2">dumpFile = newDumpFile;</font></div>
<div><font color="#008000" size="2">//Close the old one, if this is not he first one.</font></div>
<div><font color="#0000ff" size="2">if</font><font size="2"> (oldDumpFile != NULL) {</font></div>
<div><font size="2">&nbsp;&nbsp;&nbsp; pcap_dump_close(oldDumpFile);</font></div>
<div><font size="2">}</font></div>
<p></p>
<p>}</p>
<p>The thing is, is that i want to be able to run this method when that pcap instance (each instance has its own thread) is running. What might happen (probably does) is that pcap_dump_close is called with the old pcap_dumper while the capturing thread is still using it in the middle of a pcap_dispatch call. The question is, is there a lock that will wait until the call finishes or do i need to implement my own?
</p>