mirror of
https://github.com/savoirfairelinux/opendht.git
synced 2026-11-08 04:21:51 +00:00
nodejs: isolate native Linux dependency symbols
Use RTLD_DEEPBIND when loading the Linux addon so its llhttp calls do not resolve to Node's incompatible bundled parser. The CI image uses llhttp 9.2.1 while Node 22 exports 9.4.3, corrupting the heap when the proxy client starts. Preserve default loading on other platforms.
This commit is contained in:
1 parent
86d452fbb6
commit
afab251376
1 file changed
+6
-1
+6
-1
@@ -1,10 +1,15 @@
|
||||
import { EventEmitter } from 'node:events';
|
||||
import { constants } from 'node:os';
|
||||
import { dlopen } from 'node:process';
|
||||
import load from 'node-gyp-build';
|
||||
import createCrypto from './crypto.js';
|
||||
|
||||
const binding = { exports: {} };
|
||||
dlopen(binding, process.env.OPENDHT_NODE_BINDING || load.path(import.meta.dirname));
|
||||
const flags = process.platform === 'linux'
|
||||
? constants.dlopen.RTLD_LAZY | constants.dlopen.RTLD_DEEPBIND
|
||||
: undefined;
|
||||
dlopen(binding, process.env.OPENDHT_NODE_BINDING || load.path(import.meta.dirname),
|
||||
flags);
|
||||
const native = binding.exports;
|
||||
const { PublicKey, PrivateKey, Certificate, Identity, handle } = createCrypto(native);
|
||||
|
||||
|
||||
Reference in new issue
Block a user