From a4098511633f8b734a18c084d7d4d0431ed513e9 Mon Sep 17 00:00:00 2001
From: unknown <msvensson@pilot.mysql.com>
Date: Fri, 22 Dec 2006 00:05:40 +0100
Subject: [PATCH] Bug#24148 regression tests hang with SSL enabled  - Don't
 call SSL_shutdown a second time

vio/viossl.c:
  SSL_shutdown might return 0 indicating that it should be called once
  again for a graceful shutdown. Since the socket are going to be closed
  anyway ther is no need for the second call.
---
 vio/viossl.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/vio/viossl.c b/vio/viossl.c
index f436262a3ce..806f6fc356a 100644
--- a/vio/viossl.c
+++ b/vio/viossl.c
@@ -126,12 +126,16 @@ int vio_ssl_close(Vio *vio)
   {
     switch ((r= SSL_shutdown(ssl)))
     {
-    case 1: /* Shutdown successful */
+    case 1:
+      /* Shutdown successful */
+      break;
+    case 0:
+      /*
+        Shutdown not yet finished - since the socket is going to
+        be closed there is no need to call SSL_shutdown() a second
+        time to wait for the other side to respond
+      */
       break;
-    case 0: /* Shutdown not yet finished, call it again */
-      if ((r= SSL_shutdown(ssl) >= 0))
-        break;
-      /* Fallthrough */
     default: /* Shutdown failed */
       DBUG_PRINT("vio_error", ("SSL_shutdown() failed, error: %d",
                                SSL_get_error(ssl, r)));
-- 
2.30.9