From 49bdda2cb161f357de715c32bd5cc32a40a0f896 Mon Sep 17 00:00:00 2001 From: fsb4000 Date: Sat, 6 Dec 2014 04:27:39 +0600 Subject: [PATCH 1/1] fix_MSVC MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit При адаптации STUN модуля к MSVC( https://github.com/novacoin-project/novacoin/commit/196cd7a443bc09ac1485cce0e82e472a46a78152 ) я допустил баг. Использовал функцию _close() для закрытия сокета. А её можно использовать только для закрытия файлов . Сейчас должно быть верно. closesocket() нужно использовать и для MinGW, потому что в unistd.h написано только #include и несколько #define, то есть выполняется та же самая функция close() для закрытия файлов. Информация по теме: https://stackoverflow.com/questions/20847057/can-you-close-read-and-write-a-socket-on-windows --- src/stun.cpp | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/stun.cpp b/src/stun.cpp index f724eaa..4bf2c94 100644 --- a/src/stun.cpp +++ b/src/stun.cpp @@ -41,10 +41,8 @@ #include #include #endif -#ifndef _MSC_VER +#ifndef WIN32 #include -#else -#include #endif #include #include @@ -509,10 +507,10 @@ static int StunRequest(const char *host, uint16_t port, struct sockaddr_in *mapp int rc = -3; if(bind(sock, (struct sockaddr*)&client, sizeof(client)) >= 0) rc = StunRequest2(sock, &server, mapped); -#ifndef _MSC_VER +#ifndef WIN32 close(sock); #else - _close(sock); + closesocket(sock); #endif return rc; } // StunRequest -- 1.7.1