|
So long story short, boost 1.81 has fairly large breaking API changes,
as they migrated to use an internal string_view shim rather than
std::string_view, across the entire beast codebase. Therefore, we
remove any attempts to convert to std::string_view from
boost::core::string_view, as it implicitly handles conversions to
std::string where needed (like std::string_view).
Long story. boostorg/beast#2451 introduced a change in their string_view
type defs for beast, which ultimately removed the to_string() method
inherited from boost::string_view (which is different to boost::core),
effectively changing the type of most of the returned values in
rgw_asio_client.cc's header manipulation logic.
However, this new shim string_view implicitly converts to std::string,
which is needed by RGWEnv::set, hence our removal of the various
to_string()s scattered across the file.
Notably, RGWEnv::set is remarkably strict in its accepted values, so I
trust that if this compiles we have introduced a subtle use after free
vis-a-vis all these string_views flying around.
References: https://github.com/boostorg/beast/pull/2451
References: https://github.com/ceph/ceph/blob/v17.2.5/src/rgw/rgw_asio_client.cc
References: https://github.com/boostorg/beast/issues/2594#issuecomment-1360956011
References: https://github.com/ceph/ceph/blob/v17.2.5/src/rgw/rgw_env.cc#L22
|