Skip to content

Commit 351f05a

Browse files
committed
-
1 parent 37c3f3d commit 351f05a

5 files changed

Lines changed: 84 additions & 66 deletions

File tree

main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ int main(int argc, char **argv)
113113
}
114114
};
115115
// 为了防止对象在多线程情况下销毁出问题
116-
std::jthread t(create_thread, create_thread, 3);
116+
// std::jthread t(create_thread, create_thread, 1);
117117

118118
io_context.run();
119119
}

src/certificate/cert.cpp

Lines changed: 54 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,9 @@ namespace hcpp
269269
BIO *bio = BIO_new(BIO_s_mem());
270270
PEM_write_bio_PrivateKey(bio, pkey, NULL, NULL, 0, NULL, NULL);
271271
auto pkey_size = BIO_pending(bio);
272-
auto pkey_array = new char[pkey_size + 1];
273-
BIO_read(bio, pkey_array, pkey_size);
272+
std::string pkey_array{};
273+
pkey_array.resize(pkey_size+1);
274+
BIO_read(bio, pkey_array.data(), pkey_size);
274275
BIO_free_all(bio);
275276
return pkey_array;
276277
}
@@ -280,8 +281,9 @@ namespace hcpp
280281
BIO *bio = BIO_new(BIO_s_mem());
281282
PEM_write_bio_X509_PUBKEY(bio, pkey);
282283
auto pkey_size = BIO_pending(bio);
283-
auto pubkey_array = new char[pkey_size + 1];
284-
BIO_read(bio, pubkey_array, pkey_size);
284+
std::string pubkey_array;
285+
pubkey_array.resize(pkey_size + 1);
286+
BIO_read(bio, pubkey_array.data(), pkey_size);
285287
BIO_free_all(bio);
286288
return pubkey_array;
287289
}
@@ -326,53 +328,53 @@ namespace hcpp
326328
// static void test()
327329
// {
328330

329-
// auto cert = X509_new();
330-
331-
// auto pkey = generate_pkey();
332-
// if (pkey == NULL)
333-
// CHECK(false);
334-
// print_key(pkey);
335-
336-
// set_version(cert);
337-
// set_validity(cert);
338-
// set_serialNumber(cert);
339-
// add_issuer(cert);
340-
// set_subject(cert);
341-
// // add_SAN(cert);
342-
// add_ca_BS(cert);
343-
// add_AKI(cert);
344-
// add_SKI(cert);
345-
// add_ca_key_usage(cert);
346-
// set_pubkey(cert, pkey);
347-
// sign(cert, pkey);
348-
349-
// print_cert(cert);
350-
351-
// Save the private key to a file.
352-
// FILE *privateKeyFile = fopen("hcpp.key.pem", "w");
353-
// if (!privateKeyFile)
354-
// {
355-
// // CHECK(false);
356-
// }
357-
// if (!PEM_write_PrivateKey(privateKeyFile, pkey, nullptr, nullptr, 0, nullptr, nullptr))
358-
// {
359-
// fclose(privateKeyFile);
360-
// // CHECK(false);
361-
// }
362-
// fclose(privateKeyFile);
363-
364-
// // Save the CA certificate to a file.
365-
// // auto certfile="cert";
366-
367-
// FILE *caCertFile = fopen("hcpp.crt.pem", "wb");
368-
// if (!caCertFile)
369-
// {
370-
// X509_free(cert);
371-
// // CHECK(false);
372-
// }
373-
// PEM_write_X509(caCertFile, cert);
374-
375-
// fclose(caCertFile);
376-
// X509_free(cert);
331+
// auto cert = X509_new();
332+
333+
// auto pkey = generate_pkey();
334+
// if (pkey == NULL)
335+
// CHECK(false);
336+
// print_key(pkey);
337+
338+
// set_version(cert);
339+
// set_validity(cert);
340+
// set_serialNumber(cert);
341+
// add_issuer(cert);
342+
// set_subject(cert);
343+
// // add_SAN(cert);
344+
// add_ca_BS(cert);
345+
// add_AKI(cert);
346+
// add_SKI(cert);
347+
// add_ca_key_usage(cert);
348+
// set_pubkey(cert, pkey);
349+
// sign(cert, pkey);
350+
351+
// print_cert(cert);
352+
353+
// Save the private key to a file.
354+
// FILE *privateKeyFile = fopen("hcpp.key.pem", "w");
355+
// if (!privateKeyFile)
356+
// {
357+
// // CHECK(false);
358+
// }
359+
// if (!PEM_write_PrivateKey(privateKeyFile, pkey, nullptr, nullptr, 0, nullptr, nullptr))
360+
// {
361+
// fclose(privateKeyFile);
362+
// // CHECK(false);
363+
// }
364+
// fclose(privateKeyFile);
365+
366+
// // Save the CA certificate to a file.
367+
// // auto certfile="cert";
368+
369+
// FILE *caCertFile = fopen("hcpp.crt.pem", "wb");
370+
// if (!caCertFile)
371+
// {
372+
// X509_free(cert);
373+
// // CHECK(false);
374+
// }
375+
// PEM_write_X509(caCertFile, cert);
376+
377+
// fclose(caCertFile);
378+
// X509_free(cert);
377379
// }
378380
} // namespace hcpp

src/dns.cpp

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -290,19 +290,30 @@ namespace hcpp
290290
}
291291

292292
edp_lists el;
293-
if (doh_filter_.contains(hedp.first))
293+
try
294294
{
295-
el = co_await hcpp::resolve(hedp, dns_providers_);
295+
296+
if (doh_filter_.contains(hedp.first))
297+
{
298+
el = co_await hcpp::resolve(hedp, dns_providers_);
299+
}
300+
else
301+
{
302+
tcp_resolver t(cc->get_executor());
303+
// 反而更慢,因为可能接收大量对同一个名字的解析
304+
auto src = t.resolve(hedp.first, hedp.second);
305+
306+
el.reserve(src.size());
307+
std::ranges::transform(src, std::back_inserter(el), [](auto &&i)
308+
{ return std::move(i.endpoint()); });
309+
}
296310
}
297-
else
311+
catch (const std::exception &e)
298312
{
299-
tcp_resolver t(cc->get_executor());
300-
// 反而更慢,因为可能接收大量对同一个名字的解析
301-
auto src = t.resolve(hedp.first, hedp.second);
302-
303-
el.reserve(src.size());
304-
std::ranges::transform(src, std::back_inserter(el), [](auto &&i)
305-
{ return std::move(i.endpoint()); });
313+
log::error("slow_dns::slow_dns_imp::async_resolve: 解析失败 {}",e.what());
314+
std::unique_lock<std::mutex> m(rmutex_);
315+
resolve_running_.erase(hedp);
316+
throw;
306317
}
307318

308319
{

src/https/ssl_socket_wrap.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ namespace hcpp
185185
void ssl_sock_mem::init_client(tcp_socket &&sock)
186186
{
187187
stream_type_ = ssl_stream_type::client;
188-
ctx_ = std::make_unique<ssl::context>(ssl::context::tls);
188+
ctx_ = std::make_unique<ssl::context>(ssl::context::tls_client);
189189
ssl_sock_ = std::make_unique<ssl_socket>(std::move(sock), *ctx_);
190190
}
191191

@@ -229,11 +229,16 @@ namespace hcpp
229229
ctx_->add_verify_path(*verify_path);
230230
}
231231
ssl_sock_->set_verify_mode(ssl::verify_peer);
232+
// verify_callback hh=[](auto t,auto&& t2){
233+
// log::info("ssl_sock_mem::set_verify_callback: fuck you");
234+
// return true;
235+
// };
232236
ssl_sock_->set_verify_callback(cb);
233237
}
234238

235239
ssl_sock_mem::~ssl_sock_mem()
236240
{
241+
ssl_sock_->set_verify_callback(verify_callback());
237242
try
238243
{
239244
ssl_sock_->lowest_layer().close();
@@ -242,7 +247,7 @@ namespace hcpp
242247
{
243248
log::error("~ssl_sock_mem: {}", e.what());
244249
}
245-
log::info("~ssl_sock_mem: {}=>{}", host_, stream_type_ == ssl::stream_base::server ? "server" : "client");
250+
log::info("~ssl_sock_mem: {}=>{}", stream_type_ == ssl::stream_base::server ? "client" : "server",host_);
246251
}
247252

248253
} // namespace hcpp

xmake.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ else
5454
set_toolchains("clang")
5555

5656
add_requires("asio >=1.28.0",{verify = false})
57-
add_requires("openssl >=3.2.0",{verify = false})
57+
add_requires("openssl >= 3",{verify = false})
5858
openssl_package_name = "openssl"
5959
platform_cpp_file="src/os/linux.cpp"
6060
end

0 commit comments

Comments
 (0)