Avoid infinite loop on EBADFD
[tinc] / src / linux / device.c
index a06e6da..e273bfa 100644 (file)
@@ -139,6 +139,9 @@ static bool read_packet(vpn_packet_t *packet) {
                        if(inlen <= 0) {
                                logger(DEBUG_ALWAYS, LOG_ERR, "Error while reading from %s %s: %s",
                                           device_info, device, strerror(errno));
+                               if (errno == EBADFD) { /* File descriptor in bad state */
+                                       event_exit();
+                               }
                                return false;
                        }