X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fmingw%2Fdevice.c;h=b3cbe3b327c9732a422892b5b6ee6248708deb77;hb=fbf305c09d91bf34b1504b58d50392df2e6bcfba;hp=004249ce49f82efc94b9bb0c775cdd7012184770;hpb=03f3fc01e8d9402c4a14904fded883ff8cc574f6;p=tinc diff --git a/src/mingw/device.c b/src/mingw/device.c index 004249ce..b3cbe3b3 100644 --- a/src/mingw/device.c +++ b/src/mingw/device.c @@ -1,7 +1,7 @@ /* device.c -- Interaction with Windows tap driver in a MinGW environment Copyright (C) 2002-2005 Ivo Timmermans, - 2002-2006 Guus Sliepen + 2002-2007 Guus Sliepen 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 @@ -76,18 +76,20 @@ DWORD WINAPI tapreader(void *bla) { sock = socket(ai->ai_family, SOCK_STREAM, IPPROTO_TCP); - freeaddrinfo(ai); - if(sock < 0) { logger(LOG_ERR, _("System call `%s' failed: %s"), "socket", strerror(errno)); + freeaddrinfo(ai); return -1; } if(connect(sock, ai->ai_addr, ai->ai_addrlen)) { logger(LOG_ERR, _("System call `%s' failed: %s"), "connect", strerror(errno)); + freeaddrinfo(ai); return -1; } + freeaddrinfo(ai); + logger(LOG_DEBUG, _("Tap reader running")); /* Read from tap device and send to parent */ @@ -121,8 +123,7 @@ DWORD WINAPI tapreader(void *bla) { } } -bool setup_device(void) -{ +bool setup_device(void) { HKEY key, key2; int i; @@ -143,7 +144,7 @@ bool setup_device(void) .ai_family = AF_UNSPEC, .ai_socktype = SOCK_STREAM, .ai_protocol = IPPROTO_TCP, - .ai_flags = AI_PASSIVE, + .ai_flags = 0, }; cp(); @@ -306,15 +307,13 @@ bool setup_device(void) return true; } -void close_device(void) -{ +void close_device(void) { cp(); CloseHandle(device_handle); } -bool read_packet(vpn_packet_t *packet) -{ +bool read_packet(vpn_packet_t *packet) { unsigned char bufno; cp(); @@ -336,9 +335,8 @@ bool read_packet(vpn_packet_t *packet) return true; } -bool write_packet(vpn_packet_t *packet) -{ - long lenout; +bool write_packet(vpn_packet_t *packet) { + long outlen; OVERLAPPED overlapped = {0}; cp(); @@ -346,7 +344,7 @@ bool write_packet(vpn_packet_t *packet) ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Writing packet of %d bytes to %s"), packet->len, device_info); - if(!WriteFile(device_handle, packet->data, packet->len, &lenout, &overlapped)) { + if(!WriteFile(device_handle, packet->data, packet->len, &outlen, &overlapped)) { logger(LOG_ERR, _("Error while writing to %s %s: %s"), device_info, device, winerror(GetLastError())); return false; } @@ -356,8 +354,7 @@ bool write_packet(vpn_packet_t *packet) return true; } -void dump_device_stats(void) -{ +void dump_device_stats(void) { cp(); logger(LOG_DEBUG, _("Statistics for %s %s:"), device_info, device);