X-Git-Url: http://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fmingw%2Fdevice.c;h=85c0c7b1475744a0a9ff0483b9f1419140bfe865;hb=ed1d0878afe53032a4b63e87afd4a435015cf5de;hp=428a990e2004d766f549b564dcd6723c988fc25d;hpb=ac7f82cb235008d1711781a87ffdce5d45465134;p=tinc diff --git a/src/mingw/device.c b/src/mingw/device.c index 428a990e..85c0c7b1 100644 --- a/src/mingw/device.c +++ b/src/mingw/device.c @@ -40,6 +40,9 @@ char *device = NULL; char *iface = NULL; static char *device_info = NULL; +static uint64_t device_total_in = 0; +static uint64_t device_total_out = 0; + extern char *myport; static DWORD WINAPI tapreader(void *bla) { @@ -47,7 +50,6 @@ static DWORD WINAPI tapreader(void *bla) { DWORD len; OVERLAPPED overlapped; vpn_packet_t packet; - int errors; logger(DEBUG_ALWAYS, LOG_DEBUG, "Tap reader running"); @@ -70,22 +72,13 @@ static DWORD WINAPI tapreader(void *bla) { } else { logger(DEBUG_ALWAYS, LOG_ERR, "Error while reading from %s %s: %s", device_info, device, strerror(errno)); - errors++; - if(errors >= 10) { - EnterCriticalSection(&mutex); - running = false; - LeaveCriticalSection(&mutex); - } - usleep(1000000); - continue; + return -1; } } - errors = 0; + EnterCriticalSection(&mutex); packet.len = len; packet.priority = 0; - - EnterCriticalSection(&mutex); route(myself, &packet); event_flush_output(); LeaveCriticalSection(&mutex); @@ -220,10 +213,11 @@ static bool setup_device(void) { } static void close_device(void) { - CloseHandle(device_handle); + CloseHandle(device_handle); device_handle = INVALID_HANDLE_VALUE; - free(device); - free(iface); + free(device); device = NULL; + free(iface); iface = NULL; + device_info = NULL; } static bool read_packet(vpn_packet_t *packet) { @@ -242,6 +236,8 @@ static bool write_packet(vpn_packet_t *packet) { return false; } + device_total_out += packet->len; + return true; }