blob: d2f6ab5d9912779068ad64eacdb79414791f4ce6 [file]
From c568b12cbfa71f0dd7629300743304951556f1c8 Mon Sep 17 00:00:00 2001
From: Ievgen Mutavchi <Ievgen_Mutavchi@comcast.com>
Date: Fri, 8 Jan 2021 11:55:42 -0500
Subject: [PATCH] Fix possible deadlock between SocketPort JSONRPC link
---
Source/websocket/JSONRPCLink.h | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/Source/websocket/JSONRPCLink.h b/Source/websocket/JSONRPCLink.h
index 5cb626c8..b93ae32f 100644
--- a/Source/websocket/JSONRPCLink.h
+++ b/Source/websocket/JSONRPCLink.h
@@ -1109,14 +1109,17 @@ namespace JSONRPC {
ASSERT(newElement.second == true);
if (newElement.second == true) {
+ uint64_t expiry = newElement.first->second.Expiry();
+ _adminLock.Unlock();
_channel->Submit(Core::ProxyType<INTERFACE>(message));
result = Core::ERROR_NONE;
message.Release();
- if ((_scheduledTime == 0) || (_scheduledTime > newElement.first->second.Expiry())) {
- _scheduledTime = newElement.first->second.Expiry();
+ _adminLock.Lock();
+ if ((_scheduledTime == 0) || (_scheduledTime > expiry)) {
+ _scheduledTime = expiry;
CommunicationChannel::Trigger(_scheduledTime, this);
}
}