diff options
| author | 2023-11-06 00:42:09 +0000 | |
|---|---|---|
| committer | 2023-11-06 00:42:09 +0000 | |
| commit | def0285d0d229ed9055d7f9ad6c3b7572e648b82 (patch) | |
| tree | 91197484387327c0dad9fbadfae71b58bb98c802 /src/modules | |
| parent | Add 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.cpp | 6 |
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 |
