Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commiteb5a65e

Browse files
committed
1 parent7a3b92b commiteb5a65e

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

‎httplib.h‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8984,7 +8984,9 @@ inline bool ClientImpl::create_redirect_client(
89848984
}
89858985

89868986
// Handle CA certificate store and paths if available
8987-
if (ca_cert_store_) { redirect_client.set_ca_cert_store(ca_cert_store_); }
8987+
if (ca_cert_store_ &&X509_STORE_up_ref(ca_cert_store_)) {
8988+
redirect_client.set_ca_cert_store(ca_cert_store_);
8989+
}
89888990
if (!ca_cert_file_path_.empty()) {
89898991
redirect_client.set_ca_cert_path(ca_cert_file_path_, ca_cert_dir_path_);
89908992
}
@@ -10878,6 +10880,7 @@ inline void SSLClient::set_ca_cert_store(X509_STORE *ca_cert_store) {
1087810880
if (SSL_CTX_get_cert_store(ctx_) != ca_cert_store) {
1087910881
// Free memory allocated for old cert and use new store `ca_cert_store`
1088010882
SSL_CTX_set_cert_store(ctx_, ca_cert_store);
10883+
ca_cert_store_ = ca_cert_store;
1088110884
}
1088210885
}else {
1088310886
X509_STORE_free(ca_cert_store);

‎test/test.cc‎

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9012,6 +9012,46 @@ TEST(HttpToHttpsRedirectTest, CertFile) {
90129012
ASSERT_EQ(StatusCode::OK_200, res->status);
90139013
}
90149014

9015+
TEST(SSLClientRedirectTest, CertFile) {
9016+
SSLServerssl_svr1(SERVER_CERT2_FILE, SERVER_PRIVATE_KEY_FILE);
9017+
ASSERT_TRUE(ssl_svr1.is_valid());
9018+
ssl_svr1.Get("/index", [&](const Request &, Response &res) {
9019+
res.set_redirect("https://127.0.0.1:1235/index");
9020+
ssl_svr1.stop();
9021+
});
9022+
9023+
SSLServerssl_svr2(SERVER_CERT2_FILE, SERVER_PRIVATE_KEY_FILE);
9024+
ASSERT_TRUE(ssl_svr2.is_valid());
9025+
ssl_svr2.Get("/index", [&](const Request &, Response &res) {
9026+
res.set_content("test","text/plain");
9027+
ssl_svr2.stop();
9028+
});
9029+
9030+
thread t =thread([&]() {ASSERT_TRUE(ssl_svr1.listen("127.0.0.1", PORT)); });
9031+
thread t2 =
9032+
thread([&]() {ASSERT_TRUE(ssl_svr2.listen("127.0.0.1",1235)); });
9033+
auto se =detail::scope_exit([&] {
9034+
t2.join();
9035+
t.join();
9036+
ASSERT_FALSE(ssl_svr1.is_running());
9037+
});
9038+
9039+
ssl_svr1.wait_until_ready();
9040+
ssl_svr2.wait_until_ready();
9041+
9042+
SSLClientcli("127.0.0.1", PORT);
9043+
std::string cert;
9044+
read_file(SERVER_CERT2_FILE, cert);
9045+
cli.load_ca_cert_store(cert.c_str(), cert.size());
9046+
cli.enable_server_certificate_verification(true);
9047+
cli.set_follow_location(true);
9048+
cli.set_connection_timeout(30);
9049+
9050+
auto res = cli.Get("/index");
9051+
ASSERT_TRUE(res);
9052+
ASSERT_EQ(StatusCode::OK_200, res->status);
9053+
}
9054+
90159055
TEST(MultipartFormDataTest, LargeData) {
90169056
SSLServersvr(SERVER_CERT_FILE, SERVER_PRIVATE_KEY_FILE);
90179057

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp