diff --git a/src/node_messaging.cc b/src/node_messaging.cc index c7d0b327003f41..b9212ba272d0fe 100644 --- a/src/node_messaging.cc +++ b/src/node_messaging.cc @@ -588,9 +588,9 @@ void MessagePort::OnMessage() { Mutex::ScopedLock lock(data_->mutex_); Debug(this, "MessagePort has message, receiving = %d", - static_cast(data_->receiving_messages_)); + static_cast(receiving_messages_)); - if (!data_->receiving_messages_) + if (!receiving_messages_) break; if (data_->incoming_messages_.empty()) break; @@ -722,17 +722,16 @@ void MessagePort::PostMessage(const FunctionCallbackInfo& args) { } void MessagePort::Start() { - Mutex::ScopedLock lock(data_->mutex_); Debug(this, "Start receiving messages"); - data_->receiving_messages_ = true; + receiving_messages_ = true; + Mutex::ScopedLock lock(data_->mutex_); if (!data_->incoming_messages_.empty()) TriggerAsync(); } void MessagePort::Stop() { - Mutex::ScopedLock lock(data_->mutex_); Debug(this, "Stop receiving messages"); - data_->receiving_messages_ = false; + receiving_messages_ = false; } void MessagePort::Start(const FunctionCallbackInfo& args) { diff --git a/src/node_messaging.h b/src/node_messaging.h index aa2559af2c8061..0a729c141088cb 100644 --- a/src/node_messaging.h +++ b/src/node_messaging.h @@ -116,7 +116,6 @@ class MessagePortData : public MemoryRetainer { // This mutex protects all fields below it, with the exception of // sibling_. mutable Mutex mutex_; - bool receiving_messages_ = false; std::list incoming_messages_; MessagePort* owner_ = nullptr; // This mutex protects the sibling_ field and is shared between two entangled @@ -205,6 +204,7 @@ class MessagePort : public HandleWrap { void TriggerAsync(); std::unique_ptr data_ = nullptr; + bool receiving_messages_ = false; uv_async_t async_; friend class MessagePortData;