]> granicus.if.org Git - icinga2/commitdiff
{HttpServer,JsonRpc}Connection#Disconnect(): cancel I/O ops ASAP
authorAlexander A. Klimov <alexander.klimov@icinga.com>
Mon, 9 Sep 2019 11:10:12 +0000 (13:10 +0200)
committerMichael Friedrich <michael.friedrich@icinga.com>
Mon, 9 Sep 2019 11:11:51 +0000 (13:11 +0200)
refs #7431

lib/remote/httpserverconnection.cpp
lib/remote/jsonrpcconnection.cpp

index 42adeda4c34007c4292a2c0df7d83668245ee92d..aed0fd752d83d2678bdfea79bd8dc8c4815e784d 100644 (file)
@@ -88,13 +88,13 @@ void HttpServerConnection::Disconnect()
                         */
                        boost::system::error_code ec;
 
-                       m_Stream->next_layer().async_shutdown(yc[ec]);
-
-                       m_Stream->lowest_layer().shutdown(m_Stream->lowest_layer().shutdown_both, ec);
+                       m_CheckLivenessTimer.cancel();
 
                        m_Stream->lowest_layer().cancel(ec);
 
-                       m_CheckLivenessTimer.cancel();
+                       m_Stream->next_layer().async_shutdown(yc[ec]);
+
+                       m_Stream->lowest_layer().shutdown(m_Stream->lowest_layer().shutdown_both, ec);
 
                        auto listener (ApiListener::GetInstance());
 
index e8279eac26ea59a67dc6ddcee6ddeb89b21f0c7e..5a26812a22ad19be31e1a86d6fa4bef86b297fce 100644 (file)
@@ -224,14 +224,14 @@ void JsonRpcConnection::Disconnect()
                         */
                        boost::system::error_code ec;
 
-                       m_Stream->next_layer().async_shutdown(yc[ec]);
-
-                       m_Stream->lowest_layer().shutdown(m_Stream->lowest_layer().shutdown_both, ec);
+                       m_CheckLivenessTimer.cancel();
+                       m_HeartbeatTimer.cancel();
 
                        m_Stream->lowest_layer().cancel(ec);
 
-                       m_CheckLivenessTimer.cancel();
-                       m_HeartbeatTimer.cancel();
+                       m_Stream->next_layer().async_shutdown(yc[ec]);
+
+                       m_Stream->lowest_layer().shutdown(m_Stream->lowest_layer().shutdown_both, ec);
                }
        });
 }