diff --git a/bin/server.js b/bin/server.js index aad10ef..f6196b5 100644 --- a/bin/server.js +++ b/bin/server.js @@ -246,6 +246,11 @@ class Server { wlogger.info(`Server started on port ${this.config.port}`) }) + // Explicit timeout settings reduce stale keep-alive socket reuse races. + this.server.keepAliveTimeout = this.config.serverKeepAliveTimeoutMs + this.server.headersTimeout = this.config.serverHeadersTimeoutMs + this.server.requestTimeout = this.config.serverRequestTimeoutMs + this.server.on('error', (err) => { console.error('Server error:', err) wlogger.error('Server error:', err) diff --git a/package-lock.json b/package-lock.json index fc2d34c..64ee540 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,12 +9,12 @@ "version": "7.0.0", "license": "MIT", "dependencies": { - "@psf/bch-js": "7.1.11", + "@psf/bch-js": "7.1.14", "axios": "1.7.7", "cors": "2.8.5", "dotenv": "16.3.1", "express": "5.1.0", - "minimal-slp-wallet": "7.1.4", + "minimal-slp-wallet": "7.1.5", "psffpp": "1.2.1", "slp-token-media": "1.2.10", "winston": "3.11.0", @@ -858,9 +858,9 @@ } }, "node_modules/@psf/bch-js": { - "version": "7.1.11", - "resolved": "https://registry.npmjs.org/@psf/bch-js/-/bch-js-7.1.11.tgz", - "integrity": "sha512-gDJCaY2aG8EtUWcR9D4tbiyM1BkHd7gkuO7NRaLpwdbSrnU51lyPr69mjQLKOcVlL+aXdJsOjL5pm15t4zq18w==", + "version": "7.1.14", + "resolved": "https://registry.npmjs.org/@psf/bch-js/-/bch-js-7.1.14.tgz", + "integrity": "sha512-B/NXuxSoOHgMR0tHyY8qpXN3VDATeBhd6qhasJsiEjb22IGIjsXsdJ0oZR2DLnn/1UA+94+XJNyVz2UlcaqEpw==", "license": "MIT", "dependencies": { "@chris.troutner/bip32-utils": "1.0.5", @@ -6475,13 +6475,13 @@ } }, "node_modules/minimal-slp-wallet": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/minimal-slp-wallet/-/minimal-slp-wallet-7.1.4.tgz", - "integrity": "sha512-oHPDu+dUyAT8YOyKvb6JGZYIoalXAEHvcAUby7OgL3D/5R+cR21FTjpqpp7BJp+NFcGRANohnLAqpP2vt6tgFA==", + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/minimal-slp-wallet/-/minimal-slp-wallet-7.1.5.tgz", + "integrity": "sha512-dROdawFZJZLvyTRndJi987S+z0cOG9k6coyyTAfkaaQftP+UayjUyjKeQlJVrKAPgIzxhk6EoZKD6AtoGjwQrw==", "license": "MIT", "dependencies": { "@chris.troutner/retry-queue": "1.0.11", - "@psf/bch-js": "7.1.11", + "@psf/bch-js": "7.1.14", "bch-consumer": "1.6.2", "bch-donation": "1.1.2", "crypto-js": "4.0.0" diff --git a/package.json b/package.json index 29e267d..684ac12 100644 --- a/package.json +++ b/package.json @@ -15,12 +15,12 @@ "license": "MIT", "description": "REST API proxy to Bitcoin Cash infrastructure", "dependencies": { - "@psf/bch-js": "7.1.11", + "@psf/bch-js": "7.1.14", "axios": "1.7.7", "cors": "2.8.5", "dotenv": "16.3.1", "express": "5.1.0", - "minimal-slp-wallet": "7.1.4", + "minimal-slp-wallet": "7.1.5", "psffpp": "1.2.1", "slp-token-media": "1.2.10", "winston": "3.11.0", diff --git a/src/config/env/common.js b/src/config/env/common.js index f8e52d8..8e59f86 100644 --- a/src/config/env/common.js +++ b/src/config/env/common.js @@ -47,6 +47,11 @@ export default { // Server port port: parseInt(process.env.PORT, 10) || 5942, + // HTTP server connection lifecycle configuration. + serverKeepAliveTimeoutMs: Number(process.env.SERVER_KEEPALIVE_TIMEOUT_MS || 3000), + serverHeadersTimeoutMs: Number(process.env.SERVER_HEADERS_TIMEOUT_MS || 65000), + serverRequestTimeoutMs: Number(process.env.SERVER_REQUEST_TIMEOUT_MS || 120000), + // Environment env: process.env.NODE_ENV || 'development', diff --git a/src/use-cases/fulcrum-use-cases.js b/src/use-cases/fulcrum-use-cases.js index e9889f5..9a0e90a 100644 --- a/src/use-cases/fulcrum-use-cases.js +++ b/src/use-cases/fulcrum-use-cases.js @@ -146,7 +146,7 @@ class FulcrumUseCases { if (response.transactions && Array.isArray(response.transactions)) { // Use bearer token from request if provided, otherwise use the default bchjs instance let bchjsInstance = this.bchjs - + // console.log('getTransactionsBulk() bearerToken: ', bearerToken) if (bearerToken) { // Create a temporary bchjs instance with the bearer token from the request