Fixed TLS init order

This commit is contained in:
SChernykh
2025-09-17 09:14:32 +02:00
parent 32e940577e
commit f141bef4b5
3 changed files with 23 additions and 3 deletions

View File

@@ -44,6 +44,10 @@
#include "randomx.h"
#endif
#ifdef WITH_TLS
#include "tls.h"
#endif
#if defined(_WIN32) && defined(_MSC_VER) && !defined(NDEBUG)
#include <DbgHelp.h>
@@ -312,6 +316,13 @@ int main(int argc, char* argv[])
grpc_init();
#endif
#ifdef WITH_TLS
if (!p2pool::ServerTls::global_init()) {
printf("ServerTls::global_init failed\n");
return 1;
}
#endif
try {
p2pool::p2pool pool(argc, argv);
result = pool.run();

View File

@@ -49,7 +49,7 @@ static bssl::UniquePtr<EVP_PKEY> init_evp_pkey()
return evp_pkey;
}
static bssl::UniquePtr<EVP_PKEY> s_evp_pkey = init_evp_pkey();
static bssl::UniquePtr<EVP_PKEY> s_evp_pkey;
static bssl::UniquePtr<X509> init_cert()
{
@@ -115,7 +115,7 @@ static bssl::UniquePtr<X509> init_cert()
return x509;
}
static bssl::UniquePtr<X509> s_cert = init_cert();
static bssl::UniquePtr<X509> s_cert;
static bssl::UniquePtr<SSL_CTX> init_ctx()
{
@@ -140,7 +140,15 @@ static bssl::UniquePtr<SSL_CTX> init_ctx()
return ctx;
}
static bssl::UniquePtr<SSL_CTX> s_ctx = init_ctx();
static bssl::UniquePtr<SSL_CTX> s_ctx;
bool ServerTls::global_init()
{
s_evp_pkey = init_evp_pkey();
s_cert = init_cert();
s_ctx = init_ctx();
return s_evp_pkey && s_cert && s_ctx;
}
bool ServerTls::load_from_files(const char* cert, const char* cert_key)
{

View File

@@ -37,6 +37,7 @@ class ServerTls
public:
FORCEINLINE ServerTls() { reset(); }
[[nodiscard]] static bool global_init();
[[nodiscard]] static bool load_from_files(const char* cert, const char* cert_key);
void reset();