]> granicus.if.org Git - icinga2/commitdiff
Add a missing lock in TlsStream::Close
authorGunnar Beutner <gunnar.beutner@netways.de>
Tue, 5 Aug 2014 07:35:28 +0000 (09:35 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Tue, 5 Aug 2014 07:35:28 +0000 (09:35 +0200)
fixes #6621
refs #6724

lib/base/tlsstream.cpp

index a7ab8f3b84d07f27a0d2c3b36584d4df960dbe52..a75c7a9c5dac7ced3e3ebc62cc33eb71f3964059 100644 (file)
@@ -235,14 +235,18 @@ void TlsStream::Close(void)
        for (int i = 0; i < 5; i++) {
                int rc, err;
 
-               do {
+               {
+                       boost::mutex::scoped_lock lock(m_SSLLock);
                        rc = SSL_shutdown(m_SSL.get());
-               } while (rc == 0);
 
-               if (rc > 0)
-                       break;
+                       if (rc == 0)
+                               continue;
+
+                       if (rc > 0)
+                               break;
 
-               err = SSL_get_error(m_SSL.get(), rc);
+                       err = SSL_get_error(m_SSL.get(), rc);
+               }
 
                switch (err) {
                        case SSL_ERROR_WANT_READ: