]> granicus.if.org Git - icinga2/commitdiff
JsonRpcConnection#Disconnect(): unregister the connection ASAP 7445/head
authorAlexander A. Klimov <alexander.klimov@icinga.com>
Fri, 23 Aug 2019 15:14:13 +0000 (17:14 +0200)
committerAlexander A. Klimov <alexander.klimov@icinga.com>
Fri, 23 Aug 2019 15:14:13 +0000 (17:14 +0200)
refs #7444

lib/remote/jsonrpcconnection.cpp

index 9df446e1c424534afce58eef8d6ce7c72a336fcc..3c775f68d7602fba3ae94385a43bb79272f6e21e 100644 (file)
@@ -200,6 +200,16 @@ void JsonRpcConnection::Disconnect()
                        Log(LogWarning, "JsonRpcConnection")
                                << "API client disconnected for identity '" << m_Identity << "'";
 
+                       {
+                               CpuBoundWork removeClient (yc);
+
+                               if (m_Endpoint) {
+                                       m_Endpoint->RemoveClient(this);
+                               } else {
+                                       ApiListener::GetInstance()->RemoveAnonymousClient(this);
+                               }
+                       }
+
                        m_OutgoingMessagesQueued.Set();
 
                        m_WriterDone.Wait(yc);
@@ -221,15 +231,6 @@ void JsonRpcConnection::Disconnect()
 
                        m_CheckLivenessTimer.cancel();
                        m_HeartbeatTimer.cancel();
-
-                       CpuBoundWork removeClient (yc);
-
-                       if (m_Endpoint) {
-                               m_Endpoint->RemoveClient(this);
-                       } else {
-                               auto listener (ApiListener::GetInstance());
-                               listener->RemoveAnonymousClient(this);
-                       }
                }
        });
 }