typedef asio::ssl::stream ssl_socket; session* = new newsession(); // creates session with member ssl_socket socket_ manager.start(session); // manager::start(session*) { session->shutdown(); } // newsession::shutdown() { socket_.async_shutdown(boost::bind(&session::handle_stop, this, asio::placeholders::error)); // this throws asio::error:no_permission }