mirror of
https://github.com/savoirfairelinux/opendht.git
synced 2026-11-08 04:21:51 +00:00
nodejs: initialize GnuTLS before using the addon
This commit is contained in:
1 parent
b714714128
commit
05abfa89bf
1 file changed
+15
@@ -1,5 +1,6 @@
|
||||
#include <napi.h>
|
||||
#include <opendht.h>
|
||||
#include <gnutls/gnutls.h>
|
||||
#include "crypto.h"
|
||||
#include <algorithm>
|
||||
#include <atomic>
|
||||
@@ -15,6 +16,17 @@ namespace {
|
||||
constexpr size_t maxQueuedEvents = 1024;
|
||||
constexpr size_t maxResultBytes = 16 * 1024 * 1024;
|
||||
|
||||
struct GnuTlsContext
|
||||
{
|
||||
const int result = gnutls_global_init();
|
||||
|
||||
~GnuTlsContext()
|
||||
{
|
||||
if (result == GNUTLS_E_SUCCESS)
|
||||
gnutls_global_deinit();
|
||||
}
|
||||
};
|
||||
|
||||
using opendht_node::guarded;
|
||||
|
||||
uint32_t
|
||||
@@ -765,6 +777,9 @@ hash(const Napi::CallbackInfo& info)
|
||||
Napi::Object
|
||||
initialize(Napi::Env env, Napi::Object exports)
|
||||
{
|
||||
static const GnuTlsContext crypto;
|
||||
if (crypto.result != GNUTLS_E_SUCCESS)
|
||||
throw Napi::Error::New(env, std::string("Unable to initialize GnuTLS: ") + gnutls_strerror(crypto.result));
|
||||
opendht_node::initializeCrypto(env, exports);
|
||||
exports.Set("NativeRunner", Runner::define(env));
|
||||
exports.Set("hash", Napi::Function::New(env, hash));
|
||||
|
||||
Reference in new issue
Block a user