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/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": { 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; 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/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); } diff --git a/src/srt-server.js b/src/srt-server.js index 3f72fa2..92f5b10 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) { + return await this._asyncSrt.setSockOpt(this.fd, opt, val); + } } /** 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; diff --git a/types/srt-server.d.ts b/types/srt-server.d.ts index 39996a2..339c7ac 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|boolean|string): Promise; } export class SRTServer extends EventEmitter /**/ {