From f5598237b2247bf57f13836691c7605c858e0250 Mon Sep 17 00:00:00 2001 From: yhirose Date: Sat, 16 May 2020 08:49:15 -0400 Subject: [PATCH] Fixed many redirects problem on Proxy --- httplib.h | 4 ++-- test/test_proxy.cc | 18 ++++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/httplib.h b/httplib.h index 953b482..d7587e3 100644 --- a/httplib.h +++ b/httplib.h @@ -333,7 +333,7 @@ struct Request { MultipartFormData get_file_value(const char *key) const; // private members... - size_t authorization_count_ = 1; + size_t authorization_count_ = 0; }; struct Response { @@ -3995,7 +3995,7 @@ inline bool Client::handle_request(Stream &strm, const Request &req, #ifdef CPPHTTPLIB_OPENSSL_SUPPORT if ((res.status == 401 || res.status == 407) && - req.authorization_count_ == 1) { + req.authorization_count_ < 5) { auto is_proxy = res.status == 407; const auto &username = is_proxy ? proxy_digest_auth_username_ : digest_auth_username_; diff --git a/test/test_proxy.cc b/test/test_proxy.cc index 7c07b0d..1a36b77 100644 --- a/test/test_proxy.cc +++ b/test/test_proxy.cc @@ -185,15 +185,17 @@ void DigestAuthTestFromHTTPWatch(Client& cli) { for (auto path : paths) { auto res = cli.Get(path.c_str()); ASSERT_TRUE(res != nullptr); - EXPECT_EQ(400, res->status); + EXPECT_EQ(401, res->status); } - cli.set_digest_auth("bad", "world"); - for (auto path : paths) { - auto res = cli.Get(path.c_str()); - ASSERT_TRUE(res != nullptr); - EXPECT_EQ(400, res->status); - } + // NOTE: Until httpbin.org fixes issue #46, the following test is commented + // out. Plese see https://httpbin.org/digest-auth/auth/hello/world + // cli.set_digest_auth("bad", "world"); + // for (auto path : paths) { + // auto res = cli.Get(path.c_str()); + // ASSERT_TRUE(res != nullptr); + // EXPECT_EQ(401, res->status); + // } } } @@ -266,7 +268,7 @@ void KeepAliveTest(Client& cli, bool basic) { { - int count = paths.size(); + int count = static_cast(paths.size()); while (count--) { auto &res = responses[i++]; EXPECT_EQ("{\n \"authenticated\": true, \n \"user\": \"hello\"\n}\n", res.body);