nghttpx: Delete SSL_CTX on quit
This commit is contained in:
parent
2952706b53
commit
d4d7597efb
|
@ -117,6 +117,15 @@ ConnectionHandler::ConnectionHandler(struct ev_loop *loop)
|
||||||
ConnectionHandler::~ConnectionHandler() {
|
ConnectionHandler::~ConnectionHandler() {
|
||||||
ev_timer_stop(loop_, &disable_acceptor_timer_);
|
ev_timer_stop(loop_, &disable_acceptor_timer_);
|
||||||
ev_timer_stop(loop_, &ocsp_timer_);
|
ev_timer_stop(loop_, &ocsp_timer_);
|
||||||
|
|
||||||
|
for (auto ssl_ctx : all_ssl_ctx_) {
|
||||||
|
auto tls_ctx_data =
|
||||||
|
static_cast<ssl::TLSContextData *>(SSL_CTX_get_app_data(ssl_ctx));
|
||||||
|
if (tls_ctx_data) {
|
||||||
|
delete tls_ctx_data;
|
||||||
|
}
|
||||||
|
SSL_CTX_free(ssl_ctx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConnectionHandler::worker_reopen_log_files() {
|
void ConnectionHandler::worker_reopen_log_files() {
|
||||||
|
@ -148,6 +157,10 @@ void ConnectionHandler::create_single_worker() {
|
||||||
auto sv_ssl_ctx = ssl::setup_server_ssl_context(all_ssl_ctx_, cert_tree);
|
auto sv_ssl_ctx = ssl::setup_server_ssl_context(all_ssl_ctx_, cert_tree);
|
||||||
auto cl_ssl_ctx = ssl::setup_client_ssl_context();
|
auto cl_ssl_ctx = ssl::setup_client_ssl_context();
|
||||||
|
|
||||||
|
if (cl_ssl_ctx) {
|
||||||
|
all_ssl_ctx_.push_back(cl_ssl_ctx);
|
||||||
|
}
|
||||||
|
|
||||||
single_worker_ = make_unique<Worker>(loop_, sv_ssl_ctx, cl_ssl_ctx, cert_tree,
|
single_worker_ = make_unique<Worker>(loop_, sv_ssl_ctx, cl_ssl_ctx, cert_tree,
|
||||||
ticket_keys_);
|
ticket_keys_);
|
||||||
}
|
}
|
||||||
|
@ -160,6 +173,10 @@ void ConnectionHandler::create_worker_thread(size_t num) {
|
||||||
auto sv_ssl_ctx = ssl::setup_server_ssl_context(all_ssl_ctx_, cert_tree);
|
auto sv_ssl_ctx = ssl::setup_server_ssl_context(all_ssl_ctx_, cert_tree);
|
||||||
auto cl_ssl_ctx = ssl::setup_client_ssl_context();
|
auto cl_ssl_ctx = ssl::setup_client_ssl_context();
|
||||||
|
|
||||||
|
if (cl_ssl_ctx) {
|
||||||
|
all_ssl_ctx_.push_back(cl_ssl_ctx);
|
||||||
|
}
|
||||||
|
|
||||||
for (size_t i = 0; i < num; ++i) {
|
for (size_t i = 0; i < num; ++i) {
|
||||||
auto loop = ev_loop_new(0);
|
auto loop = ev_loop_new(0);
|
||||||
|
|
||||||
|
|
|
@ -111,6 +111,7 @@ public:
|
||||||
void proceed_next_cert_ocsp();
|
void proceed_next_cert_ocsp();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// Stores all SSL_CTX objects.
|
||||||
std::vector<SSL_CTX *> all_ssl_ctx_;
|
std::vector<SSL_CTX *> all_ssl_ctx_;
|
||||||
OCSPUpdateContext ocsp_;
|
OCSPUpdateContext ocsp_;
|
||||||
// Worker instances when multi threaded mode (-nN, N >= 2) is used.
|
// Worker instances when multi threaded mode (-nN, N >= 2) is used.
|
||||||
|
|
Loading…
Reference in New Issue