From 9c520c3a0b0e078a93f119cc3db4088367f5ddc8 Mon Sep 17 00:00:00 2001 From: Cloaked9000 Date: Tue, 14 Feb 2017 17:04:21 +0000 Subject: [PATCH] Disable SIGPIPE, should disconnect socket now instead --- include/frnetlib/Socket.h | 2 +- src/SSLSocket.cpp | 3 ++- src/Socket.cpp | 10 +++++++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/include/frnetlib/Socket.h b/include/frnetlib/Socket.h index 37e6c60..c651a49 100644 --- a/include/frnetlib/Socket.h +++ b/include/frnetlib/Socket.h @@ -163,8 +163,8 @@ namespace fr #ifdef _WIN32 static WSADATA wsaData; - static uint32_t instance_count; #endif // _WIN32 + static uint32_t instance_count; }; } diff --git a/src/SSLSocket.cpp b/src/SSLSocket.cpp index a6162e4..b24c993 100644 --- a/src/SSLSocket.cpp +++ b/src/SSLSocket.cpp @@ -44,7 +44,8 @@ namespace fr { if(error != MBEDTLS_ERR_SSL_WANT_READ && error != MBEDTLS_ERR_SSL_WANT_WRITE) { - return Socket::Status::Error; + is_connected = false; + return Socket::Status::Disconnected; } } diff --git a/src/Socket.cpp b/src/Socket.cpp index 04220aa..5d222b1 100644 --- a/src/Socket.cpp +++ b/src/Socket.cpp @@ -3,6 +3,7 @@ // #include +#include #include "frnetlib/NetworkEncoding.h" #include "frnetlib/Socket.h" @@ -10,25 +11,28 @@ namespace fr { #ifdef _WIN32 WSADATA Socket::wsaData = WSADATA(); - uint32_t Socket::instance_count = 0; #endif // _WIN32 + uint32_t Socket::instance_count = 0; Socket::Socket() noexcept : is_blocking(true), is_connected(false) { - #ifdef _WIN32 if(instance_count == 0) { + //Disable SIGPIPE + signal(SIGPIPE, SIG_IGN); + + #ifdef _WIN32 int wsa_result = WSAStartup(MAKEWORD(2, 2), &wsaData); if(wsa_result != 0) { std::cout << "Failed to initialise WSA." << std::endl; return; } + #endif // _WIN32 } instance_count++; - #endif // _WIN32 } Socket::Status Socket::send(Packet &packet)