ETHER: Fix asynch reader thread rundown in error recovery path.
This commit is contained in:
parent
4d817f1deb
commit
9a0d035e78
1 changed files with 7 additions and 5 deletions
12
sim_ether.c
12
sim_ether.c
|
@ -1651,15 +1651,17 @@ while (dev->handle) {
|
||||||
if (status < 0) {
|
if (status < 0) {
|
||||||
++dev->receive_packet_errors;
|
++dev->receive_packet_errors;
|
||||||
_eth_error (dev, "_eth_reader");
|
_eth_error (dev, "_eth_reader");
|
||||||
|
if (dev->handle) { /* Still attached? */
|
||||||
#if defined (_WIN32)
|
#if defined (_WIN32)
|
||||||
hWait = (dev->eth_api == ETH_API_PCAP) ? pcap_getevent ((pcap_t*)dev->handle) : NULL;
|
hWait = (dev->eth_api == ETH_API_PCAP) ? pcap_getevent ((pcap_t*)dev->handle) : NULL;
|
||||||
#endif
|
#endif
|
||||||
if (do_select) {
|
if (do_select) {
|
||||||
select_fd = dev->fd_handle;
|
select_fd = dev->fd_handle;
|
||||||
#if !defined (_WIN32) && defined(HAVE_PCAP_NETWORK)
|
#if !defined (_WIN32) && defined(HAVE_PCAP_NETWORK)
|
||||||
if (dev->eth_api == ETH_API_PCAP)
|
if (dev->eth_api == ETH_API_PCAP)
|
||||||
select_fd = pcap_get_selectable_fd((pcap_t *)dev->handle);
|
select_fd = pcap_get_selectable_fd((pcap_t *)dev->handle);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue