Compare commits

..

1 commit

Author SHA1 Message Date
Anton
4ad3045c1b Successful Connect() with proxy
Some checks failed
PR Check / on-push-commit-check (push) Has been cancelled
2024-11-26 18:34:49 +03:00

View file

@ -167,7 +167,8 @@ auto ConnectViaProxy(Socket& socket, const NoProxy&, std::string_view host, std:
}
template <typename Socket>
auto ConnectViaProxy(Socket& socket, const HttpProxy&, std::string_view host, std::uint16_t port) -> boost::asio::awaitable<void> {
auto ConnectViaProxy(Socket& socket, const HttpProxy& param_proxy, 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";
@ -179,7 +180,8 @@ auto ConnectViaProxy(Socket& socket, const HttpProxy&, std::string_view host, st
socket, boost::asio::buffer(httpConnectRequest), boost::asio::transfer_all(), boost::asio::use_awaitable);
boost::asio::streambuf proxyServerResponse;
co_await boost::asio::async_read_until(socket, proxyServerResponse, kEndOfHeaders, boost::asio::use_awaitable);
std::size_t bytesTransferred =
co_await boost::asio::async_read_until(socket, proxyServerResponse, kEndOfHeaders, boost::asio::use_awaitable);
std::istream responseStream(&proxyServerResponse);
std::string httpVersion;
@ -203,7 +205,8 @@ auto ConnectViaProxy(Socket& socket, const HttpProxy&, std::string_view host, st
}
template <typename Socket>
auto ConnectViaProxy(Socket& socket, const Socks5Proxy&, std::string_view address, std::uint16_t port) -> boost::asio::awaitable<void> {
auto ConnectViaProxy(Socket& socket, const Socks5Proxy& socksProxy, 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;
@ -283,8 +286,8 @@ auto ConnectViaProxy(Socket& socket, const SystemConfiguredProxy&, std::string_v
auto proxyOpt = GetSystemProxySettings();
co_await std::visit(
[&](auto&& proxyVariant) -> boost::asio::awaitable<void> { // NOLINT
co_await ConnectViaProxy(socket, proxyVariant, host, port); // GCC error if co_return
[&](auto&& proxy_variant) -> boost::asio::awaitable<void> { // NOLINT
co_await ConnectViaProxy(socket, proxy_variant, host, port); // GCC error if co_return
},
proxyOpt);
}
@ -315,10 +318,11 @@ 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& proxyVariant) {
return ConnectToServer(socket, proxyVariant, host, port);
[&socket, host, port](const auto& proxy_variant) {
return ConnectToServer(socket, proxy_variant, host, port);
},
proxy);
// co_await awaitable;
}
inline auto GetAuthData(const PlainUserAccount& account) -> std::string {