diff --git a/crypto.cc b/crypto.cc index 0c99667..e2b3062 100644 --- a/crypto.cc +++ b/crypto.cc @@ -272,8 +272,8 @@ void CryptoPubConnBase::OnReadable() { CryptoPubServer::CryptoPubServer(const SecretKey& secret_key) : secret_key_(secret_key), event_base_(event_base_new()) { - auto signal_event = evsignal_new(event_base_, SIGINT, &CryptoPubServer::Shutdown_, this); - event_add(signal_event, NULL); + sigevent_ = evsignal_new(event_base_, SIGINT, &CryptoPubServer::Shutdown_, this); + event_add(sigevent_, NULL); struct sockaddr_in6 server_addr = {0}; server_addr.sin6_family = AF_INET6; @@ -284,6 +284,7 @@ CryptoPubServer::CryptoPubServer(const SecretKey& secret_key) } CryptoPubServer::~CryptoPubServer() { + event_free(sigevent_); evconnlistener_free(listener_); event_base_free(event_base_); } diff --git a/crypto.h b/crypto.h index a88d38d..8adc5cc 100644 --- a/crypto.h +++ b/crypto.h @@ -105,6 +105,7 @@ class CryptoPubServer : public CryptoBase { struct event_base* event_base_; struct evconnlistener* listener_; + struct event* sigevent_; const SecretKey& secret_key_; };