aboutsummaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Sadie Powell2023-11-06 00:42:09 +0000
committerGravatar Sadie Powell2023-11-06 00:42:09 +0000
commitdef0285d0d229ed9055d7f9ad6c3b7572e648b82 (patch)
tree91197484387327c0dad9fbadfae71b58bb98c802 /src/modules
parentAdd some more files to the gitignore. (diff)
Fix a crash on shutdown when using ssl_gnutls on some systems.
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/extra/m_ssl_gnutls.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/modules/extra/m_ssl_gnutls.cpp b/src/modules/extra/m_ssl_gnutls.cpp
index f5802b69a..f596a54bf 100644
--- a/src/modules/extra/m_ssl_gnutls.cpp
+++ b/src/modules/extra/m_ssl_gnutls.cpp
@@ -1300,6 +1300,7 @@ class ModuleSSLGnuTLS : public Module
// First member of the class, gets constructed first and destructed last
GnuTLS::Init libinit;
ProfileList profiles;
+ TR1NS::function<void(char*, size_t)> rememberer;
void ReadProfiles()
{
@@ -1373,6 +1374,7 @@ class ModuleSSLGnuTLS : public Module
public:
ModuleSSLGnuTLS()
+ : rememberer(ServerInstance->GenRandom)
{
#ifndef GNUTLS_HAS_RND
gcry_control (GCRYCTL_INITIALIZATION_FINISHED, 0);
@@ -1383,7 +1385,7 @@ class ModuleSSLGnuTLS : public Module
void init() CXX11_OVERRIDE
{
ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "GnuTLS lib version %s module was compiled for " GNUTLS_VERSION, gnutls_check_version(NULL));
- ServerInstance->GenRandom = RandGen::Call;
+ ServerInstance->GenRandom = &RandGen::Call;
}
void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
@@ -1411,7 +1413,7 @@ class ModuleSSLGnuTLS : public Module
~ModuleSSLGnuTLS()
{
- ServerInstance->GenRandom = &InspIRCd::DefaultGenRandom;
+ ServerInstance->GenRandom = rememberer;
}
void OnCleanup(ExtensionItem::ExtensibleType type, Extensible* item) CXX11_OVERRIDE