Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include local iceParameters in Transport 'connect' event #292

Merged
merged 4 commits into from
Feb 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/mediasoup-client.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ jobs:
- os: ubuntu-22.04
node: 20
- os: macos-12
node: 18
- os: macos-14
node: 20
- os: windows-2022
node: 20
Expand Down
14 changes: 11 additions & 3 deletions src/Transport.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ export type PlainRtpParameters = {

export type TransportEvents = {
connect: [
{ dtlsParameters: DtlsParameters },
{ iceParameters: IceParameters; dtlsParameters: DtlsParameters },
() => void,
(error: Error) => void,
];
Expand Down Expand Up @@ -1106,7 +1106,10 @@ export class Transport<
handler.on(
'@connect',
(
{ dtlsParameters }: { dtlsParameters: DtlsParameters },
{
iceParameters,
dtlsParameters,
}: { iceParameters: IceParameters; dtlsParameters: DtlsParameters },
callback: () => void,
errback: (error: Error) => void
) => {
Expand All @@ -1116,7 +1119,12 @@ export class Transport<
return;
}

this.safeEmit('connect', { dtlsParameters }, callback, errback);
this.safeEmit(
'connect',
{ iceParameters, dtlsParameters },
callback,
errback
);
}
);

Expand Down
12 changes: 11 additions & 1 deletion src/handlers/Chrome111.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1094,6 +1094,11 @@ export class Chrome111 extends HandlerInterface {
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
}

// Get our local ICE parameters.
const iceParameters = sdpCommonUtils.extractIceParameters({
sdpObject: localSdpObject,
});

// Get our local DTLS parameters.
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
sdpObject: localSdpObject,
Expand All @@ -1109,7 +1114,12 @@ export class Chrome111 extends HandlerInterface {

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) => {
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
this.safeEmit(
'@connect',
{ iceParameters, dtlsParameters },
resolve,
reject
);
});

this._transportReady = true;
Expand Down
12 changes: 11 additions & 1 deletion src/handlers/Chrome55.ts
Original file line number Diff line number Diff line change
Expand Up @@ -822,6 +822,11 @@ export class Chrome55 extends HandlerInterface {
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
}

// Get our local ICE parameters.
const iceParameters = sdpCommonUtils.extractIceParameters({
sdpObject: localSdpObject,
});

// Get our local DTLS parameters.
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
sdpObject: localSdpObject,
Expand All @@ -837,7 +842,12 @@ export class Chrome55 extends HandlerInterface {

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) => {
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
this.safeEmit(
'@connect',
{ iceParameters, dtlsParameters },
resolve,
reject
);
});

this._transportReady = true;
Expand Down
12 changes: 11 additions & 1 deletion src/handlers/Chrome67.ts
Original file line number Diff line number Diff line change
Expand Up @@ -924,6 +924,11 @@ export class Chrome67 extends HandlerInterface {
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
}

// Get our local ICE parameters.
const iceParameters = sdpCommonUtils.extractIceParameters({
sdpObject: localSdpObject,
});

// Get our local DTLS parameters.
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
sdpObject: localSdpObject,
Expand All @@ -939,7 +944,12 @@ export class Chrome67 extends HandlerInterface {

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) => {
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
this.safeEmit(
'@connect',
{ iceParameters, dtlsParameters },
resolve,
reject
);
});

this._transportReady = true;
Expand Down
12 changes: 11 additions & 1 deletion src/handlers/Chrome70.ts
Original file line number Diff line number Diff line change
Expand Up @@ -977,6 +977,11 @@ export class Chrome70 extends HandlerInterface {
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
}

// Get our local ICE parameters.
const iceParameters = sdpCommonUtils.extractIceParameters({
sdpObject: localSdpObject,
});

// Get our local DTLS parameters.
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
sdpObject: localSdpObject,
Expand All @@ -992,7 +997,12 @@ export class Chrome70 extends HandlerInterface {

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) => {
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
this.safeEmit(
'@connect',
{ iceParameters, dtlsParameters },
resolve,
reject
);
});

this._transportReady = true;
Expand Down
12 changes: 11 additions & 1 deletion src/handlers/Chrome74.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1117,6 +1117,11 @@ export class Chrome74 extends HandlerInterface {
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
}

// Get our local ICE parameters.
const iceParameters = sdpCommonUtils.extractIceParameters({
sdpObject: localSdpObject,
});

// Get our local DTLS parameters.
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
sdpObject: localSdpObject,
Expand All @@ -1132,7 +1137,12 @@ export class Chrome74 extends HandlerInterface {

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) => {
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
this.safeEmit(
'@connect',
{ iceParameters, dtlsParameters },
resolve,
reject
);
});

this._transportReady = true;
Expand Down
10 changes: 9 additions & 1 deletion src/handlers/Edge11.ts
Original file line number Diff line number Diff line change
Expand Up @@ -625,14 +625,22 @@ export class Edge11 extends HandlerInterface {
}): Promise<void> {
logger.debug('setupTransport()');

// Get our local ICE parameters.
const iceParameters = this._iceGatherer.getLocalParameters();

// Get our local DTLS parameters.
const dtlsParameters = this._dtlsTransport.getLocalParameters();

dtlsParameters.role = localDtlsRole;

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) => {
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
this.safeEmit(
'@connect',
{ iceParameters, dtlsParameters },
resolve,
reject
);
});

// Start the RTCIceTransport.
Expand Down
6 changes: 5 additions & 1 deletion src/handlers/FakeHandler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,10 @@ export class FakeHandler extends HandlerInterface {
localDtlsRole: DtlsRole;
localSdpObject?: any;
}): Promise<void> {
const iceParameters = utils.clone<IceParameters>(
this.fakeParameters.generateLocalIceParameters()
);

const dtlsParameters = utils.clone<DtlsParameters>(
this.fakeParameters.generateLocalDtlsParameters()
);
Expand All @@ -467,7 +471,7 @@ export class FakeHandler extends HandlerInterface {

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) =>
this.emit('@connect', { dtlsParameters }, resolve, reject)
this.emit('@connect', { iceParameters, dtlsParameters }, resolve, reject)
);

this._transportReady = true;
Expand Down
12 changes: 11 additions & 1 deletion src/handlers/Firefox60.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1129,6 +1129,11 @@ export class Firefox60 extends HandlerInterface {
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
}

// Get our local ICE parameters.
const iceParameters = sdpCommonUtils.extractIceParameters({
sdpObject: localSdpObject,
});

// Get our local DTLS parameters.
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
sdpObject: localSdpObject,
Expand All @@ -1144,7 +1149,12 @@ export class Firefox60 extends HandlerInterface {

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) => {
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
this.safeEmit(
'@connect',
{ iceParameters, dtlsParameters },
resolve,
reject
);
});

this._transportReady = true;
Expand Down
2 changes: 1 addition & 1 deletion src/handlers/HandlerInterface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ export type HandlerReceiveDataChannelResult = {
export type HandlerEvents = {
'@close': [];
'@connect': [
{ dtlsParameters: DtlsParameters },
{ iceParameters: IceParameters; dtlsParameters: DtlsParameters },
() => void,
(error: Error) => void,
];
Expand Down
12 changes: 11 additions & 1 deletion src/handlers/ReactNative.ts
Original file line number Diff line number Diff line change
Expand Up @@ -843,6 +843,11 @@ export class ReactNative extends HandlerInterface {
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
}

// Get our local ICE parameters.
const iceParameters = sdpCommonUtils.extractIceParameters({
sdpObject: localSdpObject,
});

// Get our local DTLS parameters.
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
sdpObject: localSdpObject,
Expand All @@ -858,7 +863,12 @@ export class ReactNative extends HandlerInterface {

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) => {
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
this.safeEmit(
'@connect',
{ iceParameters, dtlsParameters },
resolve,
reject
);
});

this._transportReady = true;
Expand Down
12 changes: 11 additions & 1 deletion src/handlers/ReactNativeUnifiedPlan.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1146,6 +1146,11 @@ export class ReactNativeUnifiedPlan extends HandlerInterface {
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
}

// Get our local ICE parameters.
const iceParameters = sdpCommonUtils.extractIceParameters({
sdpObject: localSdpObject,
});

// Get our local DTLS parameters.
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
sdpObject: localSdpObject,
Expand All @@ -1161,7 +1166,12 @@ export class ReactNativeUnifiedPlan extends HandlerInterface {

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) => {
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
this.safeEmit(
'@connect',
{ iceParameters, dtlsParameters },
resolve,
reject
);
});

this._transportReady = true;
Expand Down
12 changes: 11 additions & 1 deletion src/handlers/Safari11.ts
Original file line number Diff line number Diff line change
Expand Up @@ -918,6 +918,11 @@ export class Safari11 extends HandlerInterface {
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
}

// Get our local ICE parameters.
const iceParameters = sdpCommonUtils.extractIceParameters({
sdpObject: localSdpObject,
});

// Get our local DTLS parameters.
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
sdpObject: localSdpObject,
Expand All @@ -933,7 +938,12 @@ export class Safari11 extends HandlerInterface {

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) => {
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
this.safeEmit(
'@connect',
{ iceParameters, dtlsParameters },
resolve,
reject
);
});

this._transportReady = true;
Expand Down
12 changes: 11 additions & 1 deletion src/handlers/Safari12.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1084,6 +1084,11 @@ export class Safari12 extends HandlerInterface {
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
}

// Get our local ICE parameters.
const iceParameters = sdpCommonUtils.extractIceParameters({
sdpObject: localSdpObject,
});

// Get our local DTLS parameters.
const dtlsParameters = sdpCommonUtils.extractDtlsParameters({
sdpObject: localSdpObject,
Expand All @@ -1099,7 +1104,12 @@ export class Safari12 extends HandlerInterface {

// Need to tell the remote transport about our parameters.
await new Promise<void>((resolve, reject) => {
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
this.safeEmit(
'@connect',
{ iceParameters, dtlsParameters },
resolve,
reject
);
});

this._transportReady = true;
Expand Down
Loading
Loading