/*
device.c -- Interaction with Windows tap driver in a MinGW environment
Copyright (C) 2002-2005 Ivo Timmermans,
- 2002-2013 Guus Sliepen <guus@tinc-vpn.org>
+ 2002-2014 Guus Sliepen <guus@tinc-vpn.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
DWORD len;
OVERLAPPED overlapped;
vpn_packet_t packet;
+ int errors;
logger(DEBUG_ALWAYS, LOG_DEBUG, "Tap reader running");
} else {
logger(DEBUG_ALWAYS, LOG_ERR, "Error while reading from %s %s: %s", device_info,
device, strerror(errno));
- return -1;
+ errors++;
+ if(errors >= 10) {
+ EnterCriticalSection(&mutex);
+ running = false;
+ LeaveCriticalSection(&mutex);
+ }
+ usleep(1000000);
+ continue;
}
}
- EnterCriticalSection(&mutex);
+ errors = 0;
packet.len = len;
packet.priority = 0;
+
+ EnterCriticalSection(&mutex);
route(myself, &packet);
event_flush_output();
LeaveCriticalSection(&mutex);