| 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); |
| } |
| } |