Compare commits

..

1 commit

Author SHA1 Message Date
Anton
46b17dd5f5 Successful Connect() with proxy
All checks were successful
PR Check / on-push-commit-check (push) Successful in 14m1s
2024-11-26 18:48:42 +03:00

View file

@ -167,8 +167,7 @@ auto ConnectViaProxy(Socket& socket, const NoProxy&, std::string_view host, std:
}
template <typename Socket>
auto ConnectViaProxy(Socket& socket, const HttpProxy& param_proxy, std::string_view host, std::uint16_t port)
-> boost::asio::awaitable<void> {
auto ConnectViaProxy(Socket& socket, const HttpProxy&, std::string_view host, std::uint16_t port) -> boost::asio::awaitable<void> {
constexpr std::string_view kHttpVersion = "HTTP/1.1";
constexpr unsigned int kSuccessStatusCode = 200;
constexpr std::string_view kEndOfHeaders = "\r\n\r\n";
@ -180,8 +179,7 @@ auto ConnectViaProxy(Socket& socket, const HttpProxy& param_proxy, std::string_v
socket, boost::asio::buffer(httpConnectRequest), boost::asio::transfer_all(), boost::asio::use_awaitable);
boost::asio::streambuf proxyServerResponse;
std::size_t bytesTransferred =
co_await boost::asio::async_read_until(socket, proxyServerResponse, kEndOfHeaders, boost::asio::use_awaitable);
co_await boost::asio::async_read_until(socket, proxyServerResponse, kEndOfHeaders, boost::asio::use_awaitable);
std::istream responseStream(&proxyServerResponse);
std::string httpVersion;
@ -205,8 +203,7 @@ auto ConnectViaProxy(Socket& socket, const HttpProxy& param_proxy, std::string_v
}
template <typename Socket>
auto ConnectViaProxy(Socket& socket, const Socks5Proxy& socksProxy, std::string_view address, std::uint16_t port)
-> boost::asio::awaitable<void> {
auto ConnectViaProxy(Socket& socket, const Socks5Proxy&, std::string_view address, std::uint16_t port) -> boost::asio::awaitable<void> {
constexpr std::array kSocks5RequestStart = {std::byte{0x05}, std::byte{0x01}, std::byte{0x00}, std::byte{0x03}};
constexpr std::size_t kSocks5RequestMaxSize = 257;
@ -286,8 +283,8 @@ auto ConnectViaProxy(Socket& socket, const SystemConfiguredProxy&, std::string_v
auto proxyOpt = GetSystemProxySettings();
co_await std::visit(
[&](auto&& proxy_variant) -> boost::asio::awaitable<void> { // NOLINT
co_await ConnectViaProxy(socket, proxy_variant, host, port); // GCC error if co_return
[&](auto&& proxyVariant) -> boost::asio::awaitable<void> { // NOLINT
co_await ConnectViaProxy(socket, proxyVariant, host, port); // GCC error if co_return
},
proxyOpt);
}
@ -318,11 +315,10 @@ auto ConnectToServer(Socket& socket, const SystemConfiguredProxy& proxy, std::st
template <typename Socket>
auto ConnectWithProxy(Socket& socket, const Proxy& proxy, std::string_view host, std::uint16_t port) -> boost::asio::awaitable<void> {
co_await std::visit(
[&socket, host, port](const auto& proxy_variant) {
return ConnectToServer(socket, proxy_variant, host, port);
[&socket, host, port](const auto& proxyVariant) {
return ConnectToServer(socket, proxyVariant, host, port);
},
proxy);
// co_await awaitable;
}
inline auto GetAuthData(const PlainUserAccount& account) -> std::string {