From 88af3ffc2ad2a906fdda373c6d68d21187474f27 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 24 Apr 2015 00:10:04 +0200 Subject: Core/Socket: Removed unused synchronous read method (cherry picked from commit 59e9bcf0bf44d89397f5a182e2ef21f7e3a3635d) Conflicts: src/server/game/Server/WorldSocket.cpp --- src/server/shared/Networking/Socket.h | 21 +-------------------- src/server/shared/Threading/ProducerConsumerQueue.h | 4 +++- 2 files changed, 4 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/server/shared/Networking/Socket.h b/src/server/shared/Networking/Socket.h index 396d4bb3aab..1989411bccb 100644 --- a/src/server/shared/Networking/Socket.h +++ b/src/server/shared/Networking/Socket.h @@ -50,6 +50,7 @@ public: virtual ~Socket() { + _closed = true; boost::system::error_code error; _socket.close(error); } @@ -97,26 +98,6 @@ public: std::bind(&Socket::ReadHandlerInternal, this->shared_from_this(), std::placeholders::_1, std::placeholders::_2)); } - void ReadData(std::size_t size) - { - if (!IsOpen()) - return; - - boost::system::error_code error; - - std::size_t bytesRead = boost::asio::read(_socket, boost::asio::buffer(_readBuffer.GetWritePointer(), size), error); - - _readBuffer.WriteCompleted(bytesRead); - - if (error || bytesRead != size) - { - TC_LOG_DEBUG("network", "Socket::ReadData: %s errored with: %i (%s)", GetRemoteIpAddress().to_string().c_str(), error.value(), - error.message().c_str()); - - CloseSocket(); - } - } - void QueuePacket(MessageBuffer&& buffer, std::unique_lock& guard) { _writeQueue.push(std::move(buffer)); diff --git a/src/server/shared/Threading/ProducerConsumerQueue.h b/src/server/shared/Threading/ProducerConsumerQueue.h index ab01568309b..e2f13e5c339 100644 --- a/src/server/shared/Threading/ProducerConsumerQueue.h +++ b/src/server/shared/Threading/ProducerConsumerQueue.h @@ -70,7 +70,9 @@ public: { std::unique_lock lock(_queueLock); - _condition.wait(lock, [this]() { return !_queue.empty() || _shutdown; }); + // we could be using .wait(lock, predicate) overload here but some threading error analysis tools produce false positives + while (_queue.empty() && !_shutdown) + _condition.wait(lock); if (_queue.empty() || _shutdown) return; -- cgit v1.2.3