From 8e4c187451183cdc12ade219b96ee52cec8a9ca5 Mon Sep 17 00:00:00 2001 From: tpoole Date: Thu, 15 Jun 2017 15:33:57 +0100 Subject: [PATCH] WebInputStream: Fixed bug preventing cancellation of streams on Linux --- modules/juce_core/native/juce_linux_Network.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/modules/juce_core/native/juce_linux_Network.cpp b/modules/juce_core/native/juce_linux_Network.cpp index 2295242273..cfdabe872c 100644 --- a/modules/juce_core/native/juce_linux_Network.cpp +++ b/modules/juce_core/native/juce_linux_Network.cpp @@ -47,7 +47,7 @@ void MACAddress::findAllAddresses (Array& result) freeifaddrs (addrs); } - close (s); + ::close (s); } } @@ -130,7 +130,7 @@ public: closeSocket(); } - //==============================================================================w + //============================================================================== bool isError() const { return socketHandle < 0; } bool isExhausted() { return finished; } int64 getPosition() { return position; } @@ -253,13 +253,20 @@ private: String httpRequestCmd; int64 chunkEnd = 0; bool isChunked = false, readingChunk = false; + CriticalSection closeSocketLock; void closeSocket (bool resetLevelsOfRedirection = true) { + const ScopedLock lock (closeSocketLock); + if (socketHandle >= 0) - close (socketHandle); + { + ::shutdown (socketHandle, SHUT_RDWR); + ::close (socketHandle); + } socketHandle = -1; + if (resetLevelsOfRedirection) levelsOfRedirection = 0; }