Skip to content

Commit 937cda3

Browse files
committed
refactor
1 parent 5089752 commit 937cda3

File tree

7 files changed

+83
-113
lines changed

7 files changed

+83
-113
lines changed

e2e/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"scripts": {
77
"build": "tsc -p tsconfig.server.json",
88
"chrome:dev": "vitest ./tests",
9-
"chrome:prod": "vitest run ./tests --browser.headless --fileParallelism=false --reporter=dot && node stop.js",
9+
"chrome:prod": "vitest run ./tests --browser.headless --reporter=dot && node stop.js",
1010
"ci": "npm run build && run-p server:prod chrome:prod",
1111
"ci:silent": "npm run build && run-p server:silent chrome:prod",
1212
"clean": "pkill -9 gst-launch",

e2e/server/main.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ import {
2727
datachannel_answer,
2828
datachannel_offer,
2929
} from "./handler/datachannel/datachannel";
30+
import {
31+
ice_restart_node_trigger,
32+
ice_restart_web_trigger,
33+
} from "./handler/ice/restart";
3034
import { ice_trickle_answer, ice_trickle_offer } from "./handler/ice/trickle";
3135
import {
3236
mediachannel_addTrack_answer,
@@ -57,10 +61,6 @@ import {
5761
mediachannel_simulcast_answer,
5862
mediachannel_simulcast_offer,
5963
} from "./handler/mediachannel/simulcast";
60-
import {
61-
ice_restart_node_trigger,
62-
ice_restart_web_trigger,
63-
} from "./handler/ice/restart";
6464

6565
const app = express();
6666
app.use(express.json() as never);

packages/ice/src/ice.ts

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -217,25 +217,6 @@ export class Connection implements IceConnection {
217217
const localPassword =
218218
this.userHistory[localUsername] ?? this.localPassword;
219219

220-
// // # authenticate request
221-
// try {
222-
// parseMessage(data, Buffer.from(localPassword, "utf8"));
223-
// if (this.remoteUsername) {
224-
// const rxUsername = `${localUsername}:${this.remoteUsername}`;
225-
// if (txUsername != rxUsername) {
226-
// log("Wrong username", {
227-
// txUsername,
228-
// localUsername: this.localUsername,
229-
// remoteUsername: this.remoteUsername,
230-
// });
231-
// throw new Error("Wrong username");
232-
// }
233-
// }
234-
// } catch (error) {
235-
// this.respondError(msg, addr, protocol, [400, "Bad Request"]);
236-
// return;
237-
// }
238-
239220
const { iceControlling } = this;
240221

241222
// 7.2.1.1. Detecting and Repairing Role Conflicts
@@ -523,7 +504,7 @@ export class Connection implements IceConnection {
523504

524505
// # cancel remaining checks
525506
for (const check of this.checkList) {
526-
check.handle?.resolve();
507+
check.handle?.resolve?.();
527508
}
528509

529510
if (res !== ICE_COMPLETED) {
@@ -726,9 +707,6 @@ export class Connection implements IceConnection {
726707

727708
if (remoteCandidate.host.includes(".local")) {
728709
try {
729-
if (this.state === "closed") {
730-
return;
731-
}
732710
if (!this.lookup) {
733711
this.lookup = new MdnsLookup();
734712
}
@@ -820,7 +798,7 @@ export class Connection implements IceConnection {
820798
// So disallow overwriting of the pair nominated for that component
821799
if (
822800
pair.nominated &&
823-
// localのgenerationは更新が間に合わないかもしれないのでチェックしない
801+
// remoteのgenerationをチェックする.localのgenerationは更新が間に合わないかもしれないのでチェックしない
824802
(pair.remoteCandidate.generation != undefined
825803
? pair.remoteCandidate.generation === this.generation
826804
: true) &&

packages/ice/src/iceBase.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import debug from "debug";
22

33
import type { Event } from "./imports/common";
44

5+
import { randomUUID } from "crypto";
56
import type { InterfaceAddresses } from "../../common/src/network";
67
import { Candidate, candidateFoundation, candidatePriority } from "./candidate";
78
import type { MdnsLookup } from "./dns/lookup";
89
import type { Cancelable } from "./helper";
910
import { classes, methods } from "./stun/const";
1011
import { Message } from "./stun/message";
1112
import type { Address, Protocol } from "./types/model";
12-
import { randomUUID } from "crypto";
1313

1414
const log = debug("werift-ice : packages/ice/src/ice.ts : log");
1515

packages/webrtc/src/peerConnection.ts

Lines changed: 71 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ export class RTCPeerConnection extends EventTarget {
264264
if (iceRestart || this.needRestart) {
265265
this.needRestart = false;
266266
for (const t of this.iceTransports) {
267-
await t.restart();
267+
t.restart();
268268
}
269269
}
270270

@@ -919,100 +919,95 @@ export class RTCPeerConnection extends EventTarget {
919919
transceiver.kind === media.kind &&
920920
[undefined, media.rtp.muxId].includes(transceiver.mid);
921921

922-
let transports = (await Promise.all(
923-
remoteSdp.media.map(async (remoteMedia, i) => {
924-
let dtlsTransport: RTCDtlsTransport;
922+
let transports = remoteSdp.media.map((remoteMedia, i) => {
923+
let dtlsTransport: RTCDtlsTransport;
925924

926-
if (["audio", "video"].includes(remoteMedia.kind)) {
927-
let transceiver = this.transceivers.find((t) =>
928-
matchTransceiverWithMedia(t, remoteMedia),
929-
);
930-
if (!transceiver) {
931-
// create remote transceiver
932-
transceiver = this._addTransceiver(remoteMedia.kind, {
933-
direction: "recvonly",
934-
});
935-
transceiver.mid = remoteMedia.rtp.muxId;
936-
this.onRemoteTransceiverAdded.execute(transceiver);
937-
} else {
938-
if (transceiver.direction === "inactive" && transceiver.stopping) {
939-
transceiver.stopped = true;
925+
if (["audio", "video"].includes(remoteMedia.kind)) {
926+
let transceiver = this.transceivers.find((t) =>
927+
matchTransceiverWithMedia(t, remoteMedia),
928+
);
929+
if (!transceiver) {
930+
// create remote transceiver
931+
transceiver = this._addTransceiver(remoteMedia.kind, {
932+
direction: "recvonly",
933+
});
934+
transceiver.mid = remoteMedia.rtp.muxId;
935+
this.onRemoteTransceiverAdded.execute(transceiver);
936+
} else {
937+
if (transceiver.direction === "inactive" && transceiver.stopping) {
938+
transceiver.stopped = true;
940939

941-
if (sessionDescription.type === "answer") {
942-
transceiver.setCurrentDirection("inactive");
943-
}
944-
return;
940+
if (sessionDescription.type === "answer") {
941+
transceiver.setCurrentDirection("inactive");
945942
}
943+
return;
946944
}
945+
}
947946

948-
if (this.remoteIsBundled) {
949-
if (!bundleTransport) {
950-
bundleTransport = transceiver.dtlsTransport;
951-
} else {
952-
transceiver.setDtlsTransport(bundleTransport);
953-
}
947+
if (this.remoteIsBundled) {
948+
if (!bundleTransport) {
949+
bundleTransport = transceiver.dtlsTransport;
950+
} else {
951+
transceiver.setDtlsTransport(bundleTransport);
954952
}
953+
}
955954

956-
dtlsTransport = transceiver.dtlsTransport;
955+
dtlsTransport = transceiver.dtlsTransport;
957956

958-
this.setRemoteRTP(transceiver, remoteMedia, remoteSdp.type, i);
959-
} else if (remoteMedia.kind === "application") {
960-
if (!this.sctpTransport) {
961-
this.sctpTransport = this.createSctpTransport();
962-
this.sctpTransport.mid = remoteMedia.rtp.muxId;
963-
}
957+
this.setRemoteRTP(transceiver, remoteMedia, remoteSdp.type, i);
958+
} else if (remoteMedia.kind === "application") {
959+
if (!this.sctpTransport) {
960+
this.sctpTransport = this.createSctpTransport();
961+
this.sctpTransport.mid = remoteMedia.rtp.muxId;
962+
}
964963

965-
if (this.remoteIsBundled) {
966-
if (!bundleTransport) {
967-
bundleTransport = this.sctpTransport.dtlsTransport;
968-
} else {
969-
this.sctpTransport.setDtlsTransport(bundleTransport);
970-
}
964+
if (this.remoteIsBundled) {
965+
if (!bundleTransport) {
966+
bundleTransport = this.sctpTransport.dtlsTransport;
967+
} else {
968+
this.sctpTransport.setDtlsTransport(bundleTransport);
971969
}
970+
}
972971

973-
dtlsTransport = this.sctpTransport.dtlsTransport;
972+
dtlsTransport = this.sctpTransport.dtlsTransport;
974973

975-
this.setRemoteSCTP(remoteMedia, this.sctpTransport, i);
976-
} else {
977-
throw new Error("invalid media kind");
978-
}
974+
this.setRemoteSCTP(remoteMedia, this.sctpTransport, i);
975+
} else {
976+
throw new Error("invalid media kind");
977+
}
979978

980-
const iceTransport = dtlsTransport.iceTransport;
979+
const iceTransport = dtlsTransport.iceTransport;
981980

982-
if (remoteMedia.iceParams) {
983-
const renomination = !!remoteSdp.media.find(
984-
(m) => m.direction === "inactive",
985-
);
986-
await iceTransport.setRemoteParams(
987-
remoteMedia.iceParams,
988-
renomination,
989-
);
981+
if (remoteMedia.iceParams) {
982+
const renomination = !!remoteSdp.media.find(
983+
(m) => m.direction === "inactive",
984+
);
985+
iceTransport.setRemoteParams(remoteMedia.iceParams, renomination);
990986

991-
// One agent full, one lite: The full agent MUST take the controlling role, and the lite agent MUST take the controlled role
992-
// RFC 8445 S6.1.1
993-
if (remoteMedia.iceParams?.iceLite) {
994-
iceTransport.connection.iceControlling = true;
995-
}
996-
}
997-
if (remoteMedia.dtlsParams) {
998-
dtlsTransport.setRemoteParams(remoteMedia.dtlsParams);
987+
// One agent full, one lite: The full agent MUST take the controlling role, and the lite agent MUST take the controlled role
988+
// RFC 8445 S6.1.1
989+
if (remoteMedia.iceParams?.iceLite) {
990+
iceTransport.connection.iceControlling = true;
999991
}
992+
}
993+
if (remoteMedia.dtlsParams) {
994+
dtlsTransport.setRemoteParams(remoteMedia.dtlsParams);
995+
}
1000996

1001-
// # add ICE candidates
1002-
remoteMedia.iceCandidates.forEach(iceTransport.addRemoteCandidate);
997+
// # add ICE candidates
998+
remoteMedia.iceCandidates.forEach(iceTransport.addRemoteCandidate);
1003999

1004-
if (remoteMedia.iceCandidatesComplete) {
1005-
iceTransport.addRemoteCandidate(undefined);
1006-
}
1000+
if (remoteMedia.iceCandidatesComplete) {
1001+
iceTransport.addRemoteCandidate(undefined);
1002+
}
10071003

1008-
// # set DTLS role
1009-
if (remoteSdp.type === "answer" && remoteMedia.dtlsParams?.role) {
1010-
dtlsTransport.role =
1011-
remoteMedia.dtlsParams.role === "client" ? "server" : "client";
1012-
}
1013-
return iceTransport;
1014-
}),
1015-
)) as RTCIceTransport[];
1004+
// # set DTLS role
1005+
if (remoteSdp.type === "answer" && remoteMedia.dtlsParams?.role) {
1006+
dtlsTransport.role =
1007+
remoteMedia.dtlsParams.role === "client" ? "server" : "client";
1008+
}
1009+
return iceTransport;
1010+
}) as RTCIceTransport[];
10161011

10171012
// filter out inactive transports
10181013
transports = transports.filter((iceTransport) => !!iceTransport);

packages/webrtc/src/transport/dtls.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import {
1818
} from "../../../dtls/src/cipher/const";
1919
import { CipherContext } from "../../../dtls/src/context/cipher";
2020
import type { Profile } from "../../../dtls/src/context/srtp";
21-
import type { Connection, IceConnection } from "../../../ice/src";
21+
import type { IceConnection } from "../../../ice/src";
2222
import {
2323
type RtcpPacket,
2424
RtcpPacketConverter,

packages/webrtc/src/transport/ice.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,7 @@ export class RTCIceTransport {
7272
}
7373
};
7474

75-
async setRemoteParams(
76-
remoteParameters: RTCIceParameters,
77-
renomination = false,
78-
) {
75+
setRemoteParams(remoteParameters: RTCIceParameters, renomination = false) {
7976
if (renomination) {
8077
this.renominating = true;
8178
}
@@ -91,13 +88,13 @@ export class RTCIceTransport {
9188
this.renominating = false;
9289
} else {
9390
log("restart", remoteParameters);
94-
await this.restart();
91+
this.restart();
9592
}
9693
}
9794
this.connection.setRemoteParams(remoteParameters);
9895
}
9996

100-
async restart() {
97+
restart() {
10198
this.connection.restart();
10299
this.setState("new");
103100
this.iceGather.gatheringState = "new";

0 commit comments

Comments
 (0)