From: Mateus Rodrigues de Morais <mateus.morais@canonical.com>
Date: Fri, 5 Dec 2025 10:34:08 -0300
Subject: fix: compatibility with Boost 1.88

Origin: https://gitlab.com/ubports/development/core/lib-cpp/net-cpp/-/commit/9ff8651b11
---
 src/core/net/http/impl/curl/multi.cpp | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/src/core/net/http/impl/curl/multi.cpp b/src/core/net/http/impl/curl/multi.cpp
index 6f647b8..7a8928a 100644
--- a/src/core/net/http/impl/curl/multi.cpp
+++ b/src/core/net/http/impl/curl/multi.cpp
@@ -22,7 +22,7 @@
 
 #include <boost/asio.hpp>
 #include <boost/asio/deadline_timer.hpp>
-#include <boost/asio/io_service.hpp>
+#include <boost/asio/io_context.hpp>
 #include <boost/asio/posix/stream_descriptor.hpp>
 
 #include <boost/accumulators/accumulators.hpp>
@@ -160,7 +160,7 @@ struct multi::Handle::Private
 
     struct Timeout
     {
-        Timeout(boost::asio::io_service& dispatcher);
+        Timeout(boost::asio::io_context& dispatcher);
 
         void cancel();
         void async_wait_for(
@@ -169,7 +169,7 @@ struct multi::Handle::Private
 
         struct Private : public std::enable_shared_from_this<Private>
         {
-            Private(boost::asio::io_service& dispatcher);
+            Private(boost::asio::io_context& dispatcher);
 
             void cancel();
 
@@ -193,7 +193,7 @@ struct multi::Handle::Private
 
     struct Socket
     {
-        Socket(boost::asio::io_service& dispatcher,
+        Socket(boost::asio::io_context& dispatcher,
                multi::native::Socket native);
         ~Socket();
 
@@ -202,7 +202,7 @@ struct multi::Handle::Private
 
         struct Private : public std::enable_shared_from_this<Private>
         {
-            Private(boost::asio::io_service& dispatcher,
+            Private(boost::asio::io_context& dispatcher,
                     multi::native::Socket native);
             ~Private();
 
@@ -242,8 +242,8 @@ struct multi::Handle::Private
     void update_timings(const easy::Handle::Timings& timings);
 
     multi::native::Handle handle;
-    boost::asio::io_service dispatcher;
-    boost::asio::io_service::work keep_alive;
+    boost::asio::io_context dispatcher;
+    boost::asio::executor_work_guard<boost::asio::io_context::executor_type> keep_alive;
     std::mutex guard;
     SynchronizedHandleStore handle_store;
     Timeout timeout;
@@ -302,7 +302,7 @@ void multi::Handle::stop()
 
 void multi::Handle::dispatch(const std::function<void ()> &task)
 {
-    d->dispatcher.post(task);
+    boost::asio::post(d->dispatcher, task);
 }
 
 void multi::Handle::add(easy::Handle easy)
@@ -368,7 +368,7 @@ void multi::Handle::Private::process_multi_info()
     }
 }
 
-multi::Handle::Private::Timeout::Timeout(boost::asio::io_service& dispatcher) : d(new Private(dispatcher))
+multi::Handle::Private::Timeout::Timeout(boost::asio::io_context& dispatcher) : d(new Private(dispatcher))
 {
 }
 
@@ -381,7 +381,7 @@ void multi::Handle::Private::Timeout::async_wait_for(const std::shared_ptr<Handl
     d->async_wait_for(context, ms);
 }
 
-multi::Handle::Private::Timeout::Private::Private(boost::asio::io_service& dispatcher) : timer(dispatcher)
+multi::Handle::Private::Timeout::Private::Private(boost::asio::io_context& dispatcher) : timer(dispatcher)
 {
 }
 
@@ -439,7 +439,7 @@ int multi::Handle::Private::timer_callback(
     return 0;
 }
 
-multi::Handle::Private::Socket::Socket(boost::asio::io_service& dispatcher,
+multi::Handle::Private::Socket::Socket(boost::asio::io_context& dispatcher,
                                        multi::native::Socket native)
     : d(new Private(dispatcher, native))
 {
@@ -460,7 +460,7 @@ void multi::Handle::Private::Socket::async_wait_for_writeable(const std::weak_pt
     d->async_wait_for_writeable(context);
 }
 
-multi::Handle::Private::Socket::Socket::Private::Private(boost::asio::io_service& dispatcher,
+multi::Handle::Private::Socket::Socket::Private::Private(boost::asio::io_context& dispatcher,
                                                          multi::native::Socket native)
     : cancel_requested(false),
       sd(dispatcher, static_cast<int>(native))
@@ -608,7 +608,7 @@ int multi::Handle::Private::socket_callback(
 
 multi::Handle::Private::Private()
     : handle(multi::native::init()),
-      keep_alive(dispatcher),
+      keep_alive(boost::asio::make_work_guard(dispatcher)),
       timeout(dispatcher)
 {
 }
