diff options
Diffstat (limited to 'include/credential_pipe.hpp')
-rw-r--r-- | include/credential_pipe.hpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/include/credential_pipe.hpp b/include/credential_pipe.hpp index 169d47c6cb..2cc3dc8b28 100644 --- a/include/credential_pipe.hpp +++ b/include/credential_pipe.hpp @@ -1,9 +1,13 @@ #pragma once +#include "logging.hpp" + #include <boost/asio/buffer.hpp> +#include <boost/asio/connect_pipe.hpp> #include <boost/asio/io_context.hpp> +#include <boost/asio/readable_pipe.hpp> +#include <boost/asio/writable_pipe.hpp> #include <boost/asio/write.hpp> -#include <boost/process/async_pipe.hpp> #include <array> #include <string> @@ -12,7 +16,15 @@ class CredentialsPipe { public: - explicit CredentialsPipe(boost::asio::io_context& io) : impl(io) {} + explicit CredentialsPipe(boost::asio::io_context& io) : impl(io), read(io) + { + boost::system::error_code ec; + boost::asio::connect_pipe(read, impl, ec); + if (ec) + { + BMCWEB_LOG_CRITICAL("Failed to connect pipe {}", ec.what()); + } + } CredentialsPipe(const CredentialsPipe&) = delete; CredentialsPipe(CredentialsPipe&&) = delete; @@ -25,9 +37,9 @@ class CredentialsPipe explicit_bzero(pass.data(), pass.capacity()); } - int fd() const + int releaseFd() { - return impl.native_source(); + return read.release(); } template <typename WriteHandler> @@ -44,7 +56,8 @@ class CredentialsPipe std::forward<WriteHandler>(handler)); } - boost::process::async_pipe impl; + boost::asio::writable_pipe impl; + boost::asio::readable_pipe read; private: std::string user; |