diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2017-01-04 12:20:43 +0100 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2017-01-04 12:21:53 +0100 |
commit | d9ae1cefa081c7ef978fab0b288475692678af72 (patch) | |
tree | aaafc90d4a0ef9a6ac14f6787a4d8852705e095f /src/netbase.cpp | |
parent | c0ddd32bf629bb48426b0651def497ca1a78e6b1 (diff) | |
parent | 67ee4ec9015592c8447955356adfcbb1bf473e32 (diff) |
Merge #9289: net: drop boost::thread_group
67ee4ec net: misc header cleanups (Cory Fields)
8b3159e net: make proxy receives interruptible (Cory Fields)
5cb0fce net: remove thread_interrupted catch (Cory Fields)
d3d7056 net: make net processing interruptible (Cory Fields)
0985052 net: make net interruptible (Cory Fields)
799df91 net: add CThreadInterrupt and InterruptibleSleep (Cory Fields)
7325b15 net: a few small cleanups before replacing boost threads (Cory Fields)
Diffstat (limited to 'src/netbase.cpp')
-rw-r--r-- | src/netbase.cpp | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/netbase.cpp b/src/netbase.cpp index 21aa645de9..8fd2a8efd2 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -16,20 +16,14 @@ #include "util.h" #include "utilstrencodings.h" -#ifdef HAVE_GETADDRINFO_A -#include <netdb.h> -#endif +#include <atomic> #ifndef WIN32 -#if HAVE_INET_PTON -#include <arpa/inet.h> -#endif #include <fcntl.h> #endif #include <boost/algorithm/string/case_conv.hpp> // for to_lower() #include <boost/algorithm/string/predicate.hpp> // for startswith() and endswith() -#include <boost/thread.hpp> #if !defined(HAVE_MSG_NOSIGNAL) && !defined(MSG_NOSIGNAL) #define MSG_NOSIGNAL 0 @@ -44,6 +38,7 @@ bool fNameLookup = DEFAULT_NAME_LOOKUP; // Need ample time for negotiation for very slow proxies such as Tor (milliseconds) static const int SOCKS5_RECV_TIMEOUT = 20 * 1000; +static std::atomic<bool> interruptSocks5Recv(false); enum Network ParseNetwork(std::string net) { boost::to_lower(net); @@ -206,7 +201,7 @@ struct timeval MillisToTimeval(int64_t nTimeout) /** * Read bytes from socket. This will either read the full number of bytes requested * or return False on error or timeout. - * This function can be interrupted by boost thread interrupt. + * This function can be interrupted by calling InterruptSocks5() * * @param data Buffer to receive into * @param len Length of data to receive @@ -246,7 +241,8 @@ bool static InterruptibleRecv(char* data, size_t len, int timeout, SOCKET& hSock return false; } } - boost::this_thread::interruption_point(); + if (interruptSocks5Recv) + return false; curTime = GetTimeMillis(); } return len == 0; @@ -715,3 +711,8 @@ bool SetSocketNonBlocking(SOCKET& hSocket, bool fNonBlocking) return true; } + +void InterruptSocks5(bool interrupt) +{ + interruptSocks5Recv = interrupt; +} |