$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: chris_at_[hidden]
Date: 2008-04-20 21:42:10
Author: chris_kohlhoff
Date: 2008-04-20 21:42:10 EDT (Sun, 20 Apr 2008)
New Revision: 44668
URL: http://svn.boost.org/trac/boost/changeset/44668
Log:
Fix infinite recursion in the ssl::stream's shutdown() implementation.
Text files modified: 
   trunk/boost/asio/ssl/detail/openssl_operation.hpp |     9 +++------                               
   1 files changed, 3 insertions(+), 6 deletions(-)
Modified: trunk/boost/asio/ssl/detail/openssl_operation.hpp
==============================================================================
--- trunk/boost/asio/ssl/detail/openssl_operation.hpp	(original)
+++ trunk/boost/asio/ssl/detail/openssl_operation.hpp	2008-04-20 21:42:10 EDT (Sun, 20 Apr 2008)
@@ -169,14 +169,11 @@
       ((::SSL_get_shutdown( session_ ) & SSL_SENT_SHUTDOWN) ==
             SSL_SENT_SHUTDOWN);
 
-    if (is_shut_down_sent && is_shut_down_received && is_operation_done)
+    if (is_shut_down_sent && is_shut_down_received && is_operation_done && !is_write_needed)
       // SSL connection is shut down cleanly
       return handler_(boost::system::error_code(), 1);
 
-    if (is_shut_down_received && !is_write_needed)
-      return handler_(boost::asio::error::eof, 0);
-
-    if (is_shut_down_received)
+    if (is_shut_down_received && !is_operation_done)
       // Shutdown has been requested, while we were reading or writing...
       // abort our action...
       return handler_(boost::asio::error::shut_down, 0);
@@ -226,7 +223,7 @@
 
         return start();
       }
-      else if (is_read_needed)
+      else if (is_read_needed || (is_shut_down_sent && !is_shut_down_received))
       {
         return read_();
       }