From ed0e4913a67c7972bca45722a167764155d52b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Birm=C3=A9?= Date: Thu, 10 Aug 2023 15:53:12 +0200 Subject: [PATCH 01/14] 0.7.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5d21949..668ce4a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@eyevinn/srt", - "version": "0.7.0", + "version": "0.7.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@eyevinn/srt", - "version": "0.7.0", + "version": "0.7.1", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 7df3aa2..7487576 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eyevinn/srt", - "version": "0.7.0", + "version": "0.7.1", "description": "Nodejs bindings for Secure Reliable Transport SDK", "main": "index.js", "scripts": { From 23efbb850165ba1777a0190bb4b4a1592a7a7660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Birm=C3=A9?= Date: Thu, 10 Aug 2023 16:04:57 +0200 Subject: [PATCH 02/14] feat: bump to libsrt 1.5.2 --- scripts/build-srt-sdk.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build-srt-sdk.js b/scripts/build-srt-sdk.js index 3aa60ca..0475e32 100755 --- a/scripts/build-srt-sdk.js +++ b/scripts/build-srt-sdk.js @@ -13,7 +13,7 @@ const os = require('os'); const env = process.env; const SRT_REPO = env.NODE_SRT_REPO || "https://github.com/Haivision/srt.git"; -const SRT_CHECKOUT = "v1.4.4"; +const SRT_CHECKOUT = "v1.5.2"; const srtRepoPath = env.NODE_SRT_LOCAL_REPO ? `file://${path.join(__dirname, env.NODE_SRT_LOCAL_REPO)}` : SRT_REPO; const srtCheckout = env.NODE_SRT_CHECKOUT || SRT_CHECKOUT; From 23407cea603fb15613c26ea7f0528b861f086312 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Birm=C3=A9?= Date: Mon, 18 Sep 2023 14:18:38 +0200 Subject: [PATCH 03/14] 0.8.0 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 668ce4a..4de3280 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@eyevinn/srt", - "version": "0.7.1", + "version": "0.8.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@eyevinn/srt", - "version": "0.7.1", + "version": "0.8.0", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 7487576..f818f41 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eyevinn/srt", - "version": "0.7.1", + "version": "0.8.0", "description": "Nodejs bindings for Secure Reliable Transport SDK", "main": "index.js", "scripts": { From b40d4a3c8c8c18927749a5103ffe80bdc9ad6c8b Mon Sep 17 00:00:00 2001 From: neoxpert <18628980+neoxpert@users.noreply.github.com> Date: Mon, 18 Sep 2023 20:38:50 +0200 Subject: [PATCH 04/14] Update srt-enums.h Updated enum definition to take new values into account aswell as reserved spaces. --- src/srt-enums.h | 133 +++++++++++++++++++++++++----------------------- 1 file changed, 70 insertions(+), 63 deletions(-) diff --git a/src/srt-enums.h b/src/srt-enums.h index 475c2ea..e2ba493 100644 --- a/src/srt-enums.h +++ b/src/srt-enums.h @@ -1,66 +1,73 @@ -#define ENUM(E) StaticValue(#E, Napi::Number::New(env, E)) - -// egrep '^\s+SRTO' srtcore/srt.h | sed 's/^.*\(SRTO_[^, ]*\)[, ].*$/ ENUM\(\1\), \\/' +#define ENUM(E,F) StaticValue(#E,Napi::Number::New(env,F)) #define SOCKET_OPTIONS \ - ENUM(SRTO_MSS), \ - ENUM(SRTO_SNDSYN), \ - ENUM(SRTO_RCVSYN), \ - ENUM(SRTO_ISN), \ - ENUM(SRTO_FC), \ - ENUM(SRTO_SNDBUF), \ - ENUM(SRTO_RCVBUF), \ - ENUM(SRTO_LINGER), \ - ENUM(SRTO_UDP_SNDBUF), \ - ENUM(SRTO_UDP_RCVBUF), \ - ENUM(SRTO_RENDEZVOUS), \ - ENUM(SRTO_SNDTIMEO), \ - ENUM(SRTO_RCVTIMEO), \ - ENUM(SRTO_REUSEADDR), \ - ENUM(SRTO_MAXBW), \ - ENUM(SRTO_STATE), \ - ENUM(SRTO_EVENT), \ - ENUM(SRTO_SNDDATA), \ - ENUM(SRTO_RCVDATA), \ - ENUM(SRTO_SENDER), \ - ENUM(SRTO_TSBPDMODE), \ - ENUM(SRTO_INPUTBW), \ - ENUM(SRTO_OHEADBW), \ - ENUM(SRTO_PASSPHRASE), \ - ENUM(SRTO_PBKEYLEN), \ - ENUM(SRTO_KMSTATE), \ - ENUM(SRTO_IPTTL), \ - ENUM(SRTO_IPTOS), \ - ENUM(SRTO_TLPKTDROP), \ - ENUM(SRTO_SNDDROPDELAY), \ - ENUM(SRTO_NAKREPORT), \ - ENUM(SRTO_VERSION), \ - ENUM(SRTO_PEERVERSION), \ - ENUM(SRTO_CONNTIMEO), \ - ENUM(SRTO_SNDKMSTATE), \ - ENUM(SRTO_RCVKMSTATE), \ - ENUM(SRTO_LOSSMAXTTL), \ - ENUM(SRTO_RCVLATENCY), \ - ENUM(SRTO_PEERLATENCY), \ - ENUM(SRTO_MINVERSION), \ - ENUM(SRTO_STREAMID), \ - ENUM(SRTO_CONGESTION), \ - ENUM(SRTO_MESSAGEAPI), \ - ENUM(SRTO_PAYLOADSIZE), \ - ENUM(SRTO_TRANSTYPE), \ - ENUM(SRTO_KMREFRESHRATE), \ - ENUM(SRTO_KMPREANNOUNCE), \ - ENUM(SRTO_ENFORCEDENCRYPTION), \ - ENUM(SRTO_IPV6ONLY), \ - ENUM(SRTO_PEERIDLETIMEO), \ - ENUM(SRTO_PACKETFILTER) - + ENUM(SRTO_MSS, 0), \ + ENUM(SRTO_SNDSYN, 1), \ + ENUM(SRTO_RCVSYN, 2), \ + ENUM(SRTO_ISN, 3), \ + ENUM(SRTO_FC, 4), \ + ENUM(SRTO_SNDBUF, 5), \ + ENUM(SRTO_RCVBUF, 6), \ + ENUM(SRTO_LINGER, 7), \ + ENUM(SRTO_UDP_SNDBUF, 8), \ + ENUM(SRTO_UDP_RCVBUF, 9), \ + ENUM(SRTO_RENDEZVOUS, 12), \ + ENUM(SRTO_SNDTIMEO, 13), \ + ENUM(SRTO_RCVTIMEO, 14), \ + ENUM(SRTO_REUSEADDR, 15), \ + ENUM(SRTO_MAXBW, 16), \ + ENUM(SRTO_STATE, 17), \ + ENUM(SRTO_EVENT, 18), \ + ENUM(SRTO_SNDDATA, 19), \ + ENUM(SRTO_RCVDATA, 20), \ + ENUM(SRTO_SENDER, 21), \ + ENUM(SRTO_TSBPDMODE, 22), \ + ENUM(SRTO_LATENCY, 23), \ + ENUM(SRTO_INPUTBW, 24), \ + ENUM(SRTO_OHEADBW, 25), \ + ENUM(SRTO_PASSPHRASE, 26), \ + ENUM(SRTO_PBKEYLEN, 27), \ + ENUM(SRTO_KMSTATE, 28), \ + ENUM(SRTO_IPTTL, 29), \ + ENUM(SRTO_IPTOS, 30), \ + ENUM(SRTO_TLPKTDROP, 31), \ + ENUM(SRTO_SNDDROPDELAY, 32), \ + ENUM(SRTO_NAKREPORT, 33), \ + ENUM(SRTO_VERSION, 34), \ + ENUM(SRTO_PEERVERSION, 35), \ + ENUM(SRTO_CONNTIMEO, 36), \ + ENUM(SRTO_DRIFTTRACER, 37), \ + ENUM(SRTO_MININPUTBW, 38), \ + ENUM(SRTO_SNDKMSTATE, 40), \ + ENUM(SRTO_RCVKMSTATE, 41), \ + ENUM(SRTO_LOSSMAXTTL, 42), \ + ENUM(SRTO_RCVLATENCY, 43), \ + ENUM(SRTO_PEERLATENCY, 44), \ + ENUM(SRTO_MINVERSION, 45), \ + ENUM(SRTO_STREAMID, 46), \ + ENUM(SRTO_CONGESTION, 47), \ + ENUM(SRTO_MESSAGEAPI, 48), \ + ENUM(SRTO_PAYLOADSIZE, 49), \ + ENUM(SRTO_TRANSTYPE, 50), \ + ENUM(SRTO_KMREFRESHRATE, 51), \ + ENUM(SRTO_KMPREANNOUNCE, 52), \ + ENUM(SRTO_ENFORCEDENCRYPTION, 53), \ + ENUM(SRTO_IPV6ONLY, 54), \ + ENUM(SRTO_PEERIDLETIMEO, 55), \ + ENUM(SRTO_BINDTODEVICE, 56), \ + ENUM(SRTO_GROUPCONNECT, 57), \ + ENUM(SRTO_GROUPMINSTABLETIMEO, 58), \ + ENUM(SRTO_GROUPTYPE, 59), \ + ENUM(SRTO_PACKETFILTER, 60), \ + ENUM(SRTO_RETRANSMITALGO, 61) + #define SOCKET_STATUS \ - ENUM(SRTS_INIT), \ - ENUM(SRTS_OPENED), \ - ENUM(SRTS_LISTENING), \ - ENUM(SRTS_CONNECTING), \ - ENUM(SRTS_CONNECTED), \ - ENUM(SRTS_BROKEN), \ - ENUM(SRTS_CLOSING), \ - ENUM(SRTS_CLOSED) + ENUM(SRTS_INIT, 1), \ + ENUM(SRTS_OPENED, 2), \ + ENUM(SRTS_LISTENING, 3), \ + ENUM(SRTS_CONNECTING, 4), \ + ENUM(SRTS_CONNECTED, 5), \ + ENUM(SRTS_BROKEN, 6), \ + ENUM(SRTS_CLOSING, 7), \ + ENUM(SRTS_CLOSED, 8), \ + ENUM(SRTS_NONEXIST, 9) From 04ce7d238b17e6cf6b75e4bb45a9b8d6c1168f39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Birm=C3=A9?= Date: Tue, 19 Sep 2023 23:05:46 +0200 Subject: [PATCH 05/14] 0.8.1 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4de3280..82fc061 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@eyevinn/srt", - "version": "0.8.0", + "version": "0.8.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@eyevinn/srt", - "version": "0.8.0", + "version": "0.8.1", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index f818f41..e488ac1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eyevinn/srt", - "version": "0.8.0", + "version": "0.8.1", "description": "Nodejs bindings for Secure Reliable Transport SDK", "main": "index.js", "scripts": { From bec9609f7088cb646f3c9d5de680ec20ebb986c5 Mon Sep 17 00:00:00 2001 From: yaruno Date: Mon, 20 Nov 2023 10:37:53 +0100 Subject: [PATCH 06/14] fix: add event emitter to async class (#64) --- src/async.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/async.js b/src/async.js index 511ddba..c2bafc2 100644 --- a/src/async.js +++ b/src/async.js @@ -6,6 +6,7 @@ const debug = require('debug')('srt-async'); const { traceCallToString, extractTransferListFromParams } = require('./async-helpers'); const { SRT } = require('../build/Release/node_srt.node'); +const EventEmitter = require('events'); const DEFAULT_PROMISE_TIMEOUT_MS = 3000; @@ -15,7 +16,7 @@ const DEBUG = false; const WORK_ID_GEN_MOD = 0xFFF; */ -class AsyncSRT { +class AsyncSRT extends EventEmitter { /** * @static @@ -67,6 +68,7 @@ class AsyncSRT { '\n Binding call:', traceCallToString(data.call.method, data.call.args), //'\n Stacktrace:', data.err.stack ); + this.emit('error', data.err.message) return; } From cf06fe6ed11ae3a5d893c0e69b16392ac1929bc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Birm=C3=A9?= Date: Mon, 20 Nov 2023 10:48:54 +0100 Subject: [PATCH 07/14] 0.8.2 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 82fc061..58f4639 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@eyevinn/srt", - "version": "0.8.1", + "version": "0.8.2", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@eyevinn/srt", - "version": "0.8.1", + "version": "0.8.2", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index e488ac1..5d81fb2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eyevinn/srt", - "version": "0.8.1", + "version": "0.8.2", "description": "Nodejs bindings for Secure Reliable Transport SDK", "main": "index.js", "scripts": { From f7938b456728dcd1306f0677a04c34ceae0aa411 Mon Sep 17 00:00:00 2001 From: yaruno Date: Mon, 20 Nov 2023 12:54:11 +0100 Subject: [PATCH 08/14] fix: AsyncSRT types and tests, add super() to AsyncSRT constructor (#67) * add event emitter to async class * fix types for AsyncSRT class * Should call super() on constructor as extending event emitter, fixes tests --- src/async.js | 2 +- types/srt-api-async.d.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/async.js b/src/async.js index c2bafc2..1f56349 100644 --- a/src/async.js +++ b/src/async.js @@ -25,7 +25,7 @@ class AsyncSRT extends EventEmitter { static TimeoutMs = DEFAULT_PROMISE_TIMEOUT_MS; constructor() { - + super() DEBUG && debug('Creating task-runner worker instance'); this._worker = new Worker(path.resolve(__dirname, './async-worker.js')); diff --git a/types/srt-api-async.d.ts b/types/srt-api-async.d.ts index 40b56f9..7f000f9 100644 --- a/types/srt-api-async.d.ts +++ b/types/srt-api-async.d.ts @@ -1,11 +1,11 @@ - +import { EventEmitter } from "events"; import { SRTLoggingLevel, SRTResult, SRTSockOpt, SRTSockStatus } from "../src/srt-api-enums"; import { SRTReadReturn, SRTFileDescriptor, SRTEpollEvent, SRTSockOptValue, SRTStats } from "./srt-api" export type AsyncSRTCallback = (result: T) => void; -export class AsyncSRT { +export class AsyncSRT extends EventEmitter { static TimeoutMs: number; From fe1d9f9cee714158acef293cf4a59dc1804af288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Birm=C3=A9?= Date: Mon, 20 Nov 2023 13:02:52 +0100 Subject: [PATCH 09/14] 0.8.3 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 58f4639..bf91413 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@eyevinn/srt", - "version": "0.8.2", + "version": "0.8.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@eyevinn/srt", - "version": "0.8.2", + "version": "0.8.3", "hasInstallScript": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 5d81fb2..8ee47dd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@eyevinn/srt", - "version": "0.8.2", + "version": "0.8.3", "description": "Nodejs bindings for Secure Reliable Transport SDK", "main": "index.js", "scripts": { From 62b4a8ceaca0923929f9a1641ddda9c3bd0915a0 Mon Sep 17 00:00:00 2001 From: neoxpert <18628980+neoxpert@users.noreply.github.com> Date: Tue, 8 Apr 2025 22:24:10 +0200 Subject: [PATCH 10/14] Update SRT to 1.5.4 (#74) * use SRT 1.5.4 * Update nodejs.yml drop EoL NodeJS versions --- .github/workflows/nodejs.yml | 2 +- scripts/build-srt-sdk.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 37aec88..5c6d04d 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -7,7 +7,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - node-version: [14.x, 16.x, 18.x] + node-version: [18.x, 20.x, 22.x] steps: - uses: actions/checkout@v3 diff --git a/scripts/build-srt-sdk.js b/scripts/build-srt-sdk.js index 0475e32..9bd557f 100755 --- a/scripts/build-srt-sdk.js +++ b/scripts/build-srt-sdk.js @@ -13,7 +13,7 @@ const os = require('os'); const env = process.env; const SRT_REPO = env.NODE_SRT_REPO || "https://github.com/Haivision/srt.git"; -const SRT_CHECKOUT = "v1.5.2"; +const SRT_CHECKOUT = "v1.5.4"; const srtRepoPath = env.NODE_SRT_LOCAL_REPO ? `file://${path.join(__dirname, env.NODE_SRT_LOCAL_REPO)}` : SRT_REPO; const srtCheckout = env.NODE_SRT_CHECKOUT || SRT_CHECKOUT; From 76c5dbc4216534a4d7c61f1d43a5a499614065f3 Mon Sep 17 00:00:00 2001 From: wrapper Date: Thu, 17 Jul 2025 11:28:41 +0700 Subject: [PATCH 11/14] Allow multiplex --- src/node-srt.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/node-srt.cc b/src/node-srt.cc index 4f8dd4f..1dbd457 100644 --- a/src/node-srt.cc +++ b/src/node-srt.cc @@ -177,7 +177,7 @@ Napi::Value NodeSRT::Accept(const Napi::CallbackInfo& info) { Napi::Error::New(env, srt_getlasterror_str()).ThrowAsJavaScriptException(); return Napi::Number::New(env, SRT_ERROR); } - srt_close(socketValue); + socketValue = Napi::Number::New(env, SRT_INVALID_SOCK); return Napi::Number::New(env, their_fd); } From 36111eec76ccaea72d0b8cea17e5f5ad094788a0 Mon Sep 17 00:00:00 2001 From: wrapper Date: Thu, 17 Jul 2025 13:26:56 +0700 Subject: [PATCH 12/14] socket opts --- src/srt-server.js | 10 +++++++++- types/srt-server.d.ts | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/srt-server.js b/src/srt-server.js index 3f72fa2..99c4a2a 100644 --- a/src/srt-server.js +++ b/src/srt-server.js @@ -99,7 +99,7 @@ class SRTConnection extends EventEmitter { this.emit('closing'); const result = await asyncSrt.close(this.fd); this.emit('closed', result); - this.off(); + this.removeAllListeners(); return result; } @@ -113,6 +113,14 @@ class SRTConnection extends EventEmitter { this._gotFirstData = true; } } + + async getSocketOpt(opt) { + return await this._asyncSrt.getSockOpt(this.fd, opt); + } + + async setSocketOpt(opt, val) { + await this._asyncSrt.setSockOpt(this.fd, opt, val); + } } /** diff --git a/types/srt-server.d.ts b/types/srt-server.d.ts index 39996a2..4f6c7e7 100644 --- a/types/srt-server.d.ts +++ b/types/srt-server.d.ts @@ -30,6 +30,9 @@ export class SRTConnection extends EventEmitter { onData(): void; getReaderWriter(): AsyncReaderWriter; + + getSocketOpt(opt: number): Promise; + setSocketOpt(opt: number, val: number): Promise; } export class SRTServer extends EventEmitter /**/ { From 8e036283a950ba88b7bb81929b10ba24b562b573 Mon Sep 17 00:00:00 2001 From: wrapper Date: Thu, 17 Jul 2025 13:32:15 +0700 Subject: [PATCH 13/14] part 2 --- types/srt-server.d.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/types/srt-server.d.ts b/types/srt-server.d.ts index 4f6c7e7..339c7ac 100644 --- a/types/srt-server.d.ts +++ b/types/srt-server.d.ts @@ -31,8 +31,8 @@ export class SRTConnection extends EventEmitter { getReaderWriter(): AsyncReaderWriter; - getSocketOpt(opt: number): Promise; - setSocketOpt(opt: number, val: number): Promise; + getSocketOpt(opt: number): Promise; + setSocketOpt(opt: number, val: number|boolean|string): Promise; } export class SRTServer extends EventEmitter /**/ { From 4a7cb0dc2a8bd9f2c63ea098ba22b8569817b7f0 Mon Sep 17 00:00:00 2001 From: wrapper Date: Thu, 17 Jul 2025 13:34:10 +0700 Subject: [PATCH 14/14] 21521 --- src/srt-server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/srt-server.js b/src/srt-server.js index 99c4a2a..92f5b10 100644 --- a/src/srt-server.js +++ b/src/srt-server.js @@ -119,7 +119,7 @@ class SRTConnection extends EventEmitter { } async setSocketOpt(opt, val) { - await this._asyncSrt.setSockOpt(this.fd, opt, val); + return await this._asyncSrt.setSockOpt(this.fd, opt, val); } }