]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd/migration/HttpClient: Use asio::ssl::stream 61312/head
authorAdam Emerson <aemerson@redhat.com>
Thu, 9 Jan 2025 23:54:11 +0000 (18:54 -0500)
committerAdam Emerson <aemerson@redhat.com>
Mon, 13 Jan 2025 14:10:52 +0000 (09:10 -0500)
`beast::ssl_stream` is deprecated as of 1.86, and its loss of the move
constructor keeps it from compiling on that version.

Hopefully this passes tests on 1.85, too, or it will have to wait
until the boost bump.

Signed-off-by: Adam Emerson <aemerson@redhat.com>
src/librbd/migration/HttpClient.cc
src/librbd/migration/HttpClient.h
src/test/librbd/migration/test_mock_HttpClient.cc

index 09fe91da02ae2dfe7da50d67da8f4b1c6403d4f6..d212981a917d5e45b488bfa3219c7e191f575471 100644 (file)
@@ -193,7 +193,7 @@ protected:
     ldout(cct, 15) << dendl;
 
     boost::system::error_code ec;
-    boost::beast::get_lowest_layer(derived().stream()).socket().close(ec);
+    derived().stream().lowest_layer().close(ec);
   }
 
 private:
@@ -357,8 +357,7 @@ private:
   }
 
   int shutdown_socket() {
-    if (!boost::beast::get_lowest_layer(
-          derived().stream()).socket().is_open()) {
+    if (!derived().stream().lowest_layer().is_open()) {
       return 0;
     }
 
@@ -366,7 +365,7 @@ private:
     ldout(cct, 15) << dendl;
 
     boost::system::error_code ec;
-    boost::beast::get_lowest_layer(derived().stream()).socket().shutdown(
+    derived().stream().lowest_layer().shutdown(
       boost::asio::ip::tcp::socket::shutdown_both, ec);
 
     if (ec && ec != boost::beast::errc::not_connected) {
@@ -595,7 +594,7 @@ public:
     this->close_socket();
   }
 
-  inline boost::beast::tcp_stream&
+  inline boost::asio::ip::tcp::socket&
   stream() {
     return m_stream;
   }
@@ -607,12 +606,13 @@ protected:
     auto cct = http_client->m_cct;
     ldout(cct, 15) << dendl;
 
-    ceph_assert(!m_stream.socket().is_open());
-    m_stream.async_connect(
-      results,
-      [on_finish](boost::system::error_code ec, const auto& endpoint) {
-        on_finish->complete(-ec.value());
-      });
+    ceph_assert(!m_stream.is_open());
+    boost::asio::async_connect(m_stream,
+                              results,
+                              [on_finish](boost::system::error_code ec,
+                                          const auto& endpoint) {
+                                on_finish->complete(-ec.value());
+                              });
   }
 
   void disconnect(Context* on_finish) override {
@@ -624,7 +624,7 @@ protected:
   }
 
 private:
-  boost::beast::tcp_stream m_stream;
+  boost::asio::ip::tcp::socket m_stream;
 };
 
 #undef dout_prefix
@@ -643,7 +643,7 @@ public:
     this->close_socket();
   }
 
-  inline boost::beast::ssl_stream<boost::beast::tcp_stream>&
+  inline boost::asio::ssl::stream<boost::asio::ip::tcp::socket>&
   stream() {
     return m_stream;
   }
@@ -655,8 +655,9 @@ protected:
     auto cct = http_client->m_cct;
     ldout(cct, 15) << dendl;
 
-    ceph_assert(!boost::beast::get_lowest_layer(m_stream).socket().is_open());
-    boost::beast::get_lowest_layer(m_stream).async_connect(
+    ceph_assert(!m_stream.lowest_layer().is_open());
+    async_connect(
+      m_stream.lowest_layer(),
       results,
       [this, on_finish](boost::system::error_code ec, const auto& endpoint) {
         handle_connect(-ec.value(), on_finish);
@@ -681,12 +682,12 @@ protected:
 
     // ssl_stream object can't be reused after shut down -- move-in
     // a freshly constructed instance
-    m_stream = boost::beast::ssl_stream<boost::beast::tcp_stream>(
+    m_stream = boost::asio::ssl::stream<boost::asio::ip::tcp::socket>(
       http_client->m_strand, http_client->m_ssl_context);
   }
 
 private:
-  boost::beast::ssl_stream<boost::beast::tcp_stream> m_stream;
+  boost::asio::ssl::stream<boost::asio::ip::tcp::socket> m_stream;
 
   void handle_connect(int r, Context* on_finish) {
     auto http_client = this->m_http_client;
index 3997e6159e7e50be9375c9feac262d36aa62883f..5844f91869301cfca992a8e9231e836b93476291 100644 (file)
 #include <boost/asio/strand.hpp>
 #include <boost/asio/ip/tcp.hpp>
 #include <boost/asio/ssl/context.hpp>
+#include <boost/asio/ssl/stream.hpp>
 #include <boost/beast/version.hpp>
-#include <boost/beast/core/tcp_stream.hpp>
 #include <boost/beast/http/empty_body.hpp>
 #include <boost/beast/http/message.hpp>
 #include <boost/beast/http/string_body.hpp>
 #include <boost/beast/http/write.hpp>
-#include <boost/beast/ssl/ssl_stream.hpp>
 #include <functional>
 #include <memory>
 #include <string>
@@ -97,7 +96,7 @@ public:
         completion(r, std::move(response));
       }
 
-      void operator()(boost::beast::tcp_stream& stream) override {
+      void operator()(boost::asio::ip::tcp::socket& stream) override {
         preprocess_request();
 
         boost::beast::http::async_write(
@@ -110,7 +109,7 @@ public:
       }
 
       void operator()(
-          boost::beast::ssl_stream<boost::beast::tcp_stream>& stream) override {
+         boost::asio::ssl::stream<boost::asio::ip::tcp::socket>& stream) override {
         preprocess_request();
 
         boost::beast::http::async_write(
@@ -152,9 +151,9 @@ private:
     virtual bool need_eof() const = 0;
     virtual bool header_only() const = 0;
     virtual void complete(int r, Response&&) = 0;
-    virtual void operator()(boost::beast::tcp_stream& stream) = 0;
+    virtual void operator()(boost::asio::ip::tcp::socket& stream) = 0;
     virtual void operator()(
-        boost::beast::ssl_stream<boost::beast::tcp_stream>& stream) = 0;
+        boost::asio::ssl::stream<boost::asio::ip::tcp::socket>& stream) = 0;
   };
 
   template <typename D> struct HttpSession;
index f3888755c79e584b83574479e8ebbfbf634a24ec..901c4231dd0679d3e20bf0787b4a8e05273e3f3b 100644 (file)
@@ -307,7 +307,7 @@ TEST_F(TestMockMigrationHttpClient, OpenCloseHttps) {
 
   boost::asio::ssl::context ssl_context{boost::asio::ssl::context::tlsv12};
   load_server_certificate(ssl_context);
-  boost::beast::ssl_stream<boost::beast::tcp_stream> ssl_stream{
+  boost::asio::ssl::stream<boost::asio::ip::tcp::socket> ssl_stream{
     std::move(socket), ssl_context};
 
   C_SaferCond on_ssl_handshake_ctx;
@@ -341,7 +341,7 @@ TEST_F(TestMockMigrationHttpClient, OpenHttpsHandshakeFail) {
 
   boost::asio::ssl::context ssl_context{boost::asio::ssl::context::tlsv12};
   load_server_certificate(ssl_context);
-  boost::beast::ssl_stream<boost::beast::tcp_stream> ssl_stream{
+  boost::asio::ssl::stream<boost::asio::ip::tcp::socket> ssl_stream{
     std::move(socket), ssl_context};
 
   C_SaferCond on_ssl_handshake_ctx;