From 9a0d035e78b7da69eaf44ae5ad0c2d50e99c8300 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 17 Jul 2014 08:58:50 -0700 Subject: [PATCH] ETHER: Fix asynch reader thread rundown in error recovery path. --- sim_ether.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sim_ether.c b/sim_ether.c index 473c036b..dee1c331 100644 --- a/sim_ether.c +++ b/sim_ether.c @@ -1651,15 +1651,17 @@ while (dev->handle) { if (status < 0) { ++dev->receive_packet_errors; _eth_error (dev, "_eth_reader"); + if (dev->handle) { /* Still attached? */ #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 - if (do_select) { - select_fd = dev->fd_handle; + if (do_select) { + select_fd = dev->fd_handle; #if !defined (_WIN32) && defined(HAVE_PCAP_NETWORK) - if (dev->eth_api == ETH_API_PCAP) - select_fd = pcap_get_selectable_fd((pcap_t *)dev->handle); + if (dev->eth_api == ETH_API_PCAP) + select_fd = pcap_get_selectable_fd((pcap_t *)dev->handle); #endif + } } } }