@dxos/network-manager 0.3.8-next.f4e0086 → 0.3.9-main.1d6fb54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{chunk-UKYZHA5S.mjs → chunk-4HITD6WI.mjs} +114 -62
- package/dist/lib/browser/chunk-4HITD6WI.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +1 -1
- package/dist/lib/node/chunk-6AD7QA4X.cjs +3813 -0
- package/dist/lib/node/chunk-6AD7QA4X.cjs.map +7 -0
- package/dist/lib/node/chunk-XE5JOIGD.cjs +462 -0
- package/dist/lib/node/chunk-XE5JOIGD.cjs.map +7 -0
- package/dist/lib/node/datachannel-53JZPGFA.cjs +35 -0
- package/dist/lib/node/datachannel-53JZPGFA.cjs.map +7 -0
- package/dist/lib/node/index.cjs +35 -4250
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +111 -4139
- package/dist/lib/node/testing/index.cjs.map +4 -4
- package/dist/types/src/connection-log.d.ts.map +1 -1
- package/dist/types/src/swarm/connection.d.ts.map +1 -1
- package/dist/types/src/transport/libdatachannel-transport.d.ts.map +1 -1
- package/dist/types/src/transport/simplepeer-transport.d.ts.map +1 -1
- package/package.json +18 -18
- package/src/connection-log.ts +13 -0
- package/src/swarm/connection.ts +17 -2
- package/src/transport/libdatachannel-transport.ts +7 -3
- package/src/transport/simplepeer-transport.ts +4 -1
- package/dist/lib/browser/chunk-UKYZHA5S.mjs.map +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-log.d.ts","sourceRoot":"","sources":["../../../src/connection-log.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,2CAA2C,CAAC;AAIhG,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"connection-log.d.ts","sourceRoot":"","sources":["../../../src/connection-log.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,KAAK,SAAS,EAAuB,MAAM,2CAA2C,CAAC;AAIhG,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAKtD,oBAAY,SAAS;IACnB,wBAAwB,6BAA6B;IACrD,cAAc,mBAAmB;IACjC,+BAA+B,oCAAoC;IACnE,6BAA6B,kCAAkC;IAC/D,kBAAkB,uBAAuB;CAC1C;AAED,qBAAa,aAAa;IACxB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwD;IAEhF,QAAQ,CAAC,MAAM,cAAe;IAE9B,YAAY,CAAC,OAAO,EAAE,SAAS;IAI/B,IAAI,MAAM,IAAI,SAAS,EAAE,CAExB;IAED,WAAW,CAAC,KAAK,EAAE,KAAK;IA2ExB,SAAS,CAAC,KAAK,EAAE,KAAK;CAIvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/swarm/connection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,EAAqC,MAAM,aAAa,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/swarm/connection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,EAAqC,MAAM,aAAa,CAAC;AAErF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAavC,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAkBrD,UAAU,mBAAmB;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB;;OAEG;IACH,OAAO,YAAY;IAEnB;;;OAGG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,UAAU,eAAe;IAEzB;;OAEG;IACH,SAAS,cAAc;IAEvB;;OAEG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,MAAM,WAAW;IAEjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED;;;GAGG;AACH,qBAAa,UAAU;aAuBH,KAAK,EAAE,SAAS;aAChB,KAAK,EAAE,SAAS;aAChB,QAAQ,EAAE,SAAS;aACnB,SAAS,EAAE,SAAS;aACpB,SAAS,EAAE,OAAO;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IA9B9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,uBAAuB,CAAiB;IAEhD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,UAAU,CAAwB;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,qBAAqB,CAAgB;IAE7C,QAAQ,CAAC,YAAY,yBAAgC;IACrD,QAAQ,CAAC,MAAM,cAAqB;IAE7B,WAAW,SAA8B;IAEhD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAE7B;IAEH,OAAO,CAAC,gBAAgB,CAA6B;gBAGnC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAAE,wBAAwB;IAC1C,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,OAAO,EACjB,gBAAgB,EAAE,eAAe,EACjC,SAAS,EAAE,YAAY,EACvB,iBAAiB,EAAE,gBAAgB,EACnC,UAAU,CAAC,iCAAqB;IAWnD,IAAI,KAAK,oBAER;IAED,IAAI,SAAS,0BAEZ;IAED,IAAI,QAAQ,iBAEX;IAED;;OAEG;IACG,cAAc;IA0Fd,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAuCjB,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IAsDvB,OAAO,CAAC,WAAW;YAKL,kBAAkB;IAiChC;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,aAAa;IA2B/B,QAAQ;IAIR,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libdatachannel-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/libdatachannel-transport.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,KAAK,EAAyB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAGpE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAQF;;GAEG;AACH,qBAAa,uBAAwB,YAAW,SAAS;IAa3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZnC,OAAO,CAAC,OAAO,CAAS;IACxB,QAAQ,CAAC,MAAM,cAAe;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAChD,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAU;IAEzB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;IACrD,OAAO,CAAC,cAAc,CAA6B;gBAEtB,MAAM,EAAE,6BAA6B;IA+ElE,OAAO,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"libdatachannel-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/libdatachannel-transport.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,KAAK,EAAyB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAGpE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpE,MAAM,MAAM,6BAA6B,GAAG;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAQF;;GAEG;AACH,qBAAa,uBAAwB,YAAW,SAAS;IAa3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZnC,OAAO,CAAC,OAAO,CAAS;IACxB,QAAQ,CAAC,MAAM,cAAe;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAChD,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,OAAO,CAAU;IAEzB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;IACrD,OAAO,CAAC,cAAc,CAA6B;gBAEtB,MAAM,EAAE,6BAA6B;IA+ElE,OAAO,CAAC,aAAa;YA2DP,MAAM;IASpB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAkDtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAIhB,kBAAkB;CAGjC;AAED,eAAO,MAAM,oCAAoC,kBAAmB,GAAG,KAAG,gBAMxE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simplepeer-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/simplepeer-transport.ts"],"names":[],"mappings":";AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAIjD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAEpE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpE,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,qBAAa,mBAAoB,YAAW,SAAS;IAWvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IAEvB,QAAQ,CAAC,MAAM,cAAe;IAC9B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;IAEpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAE7B,MAAM,EAAE,yBAAyB;
|
|
1
|
+
{"version":3,"file":"simplepeer-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/simplepeer-transport.ts"],"names":[],"mappings":";AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAIjD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAEpE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpE,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,qBAAa,mBAAoB,YAAW,SAAS;IAWvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IAEvB,QAAQ,CAAC,MAAM,cAAe;IAC9B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;IAEpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAE7B,MAAM,EAAE,yBAAyB;IAwFxD,OAAO;IAYb,MAAM,CAAC,MAAM,EAAE,MAAM;IASrB,OAAO,CAAC,kBAAkB;CAM3B;AAED,eAAO,MAAM,gCAAgC,kBAAmB,GAAG,KAAG,gBAMpE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/network-manager",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.9-main.1d6fb54",
|
|
4
4
|
"description": "Network Manager",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -29,23 +29,23 @@
|
|
|
29
29
|
"simple-peer": "9.11.1",
|
|
30
30
|
"stream": "^0.0.2",
|
|
31
31
|
"tiny-invariant": "^1.3.1",
|
|
32
|
-
"ws": "^
|
|
32
|
+
"ws": "^8.14.2",
|
|
33
33
|
"xor-distance": "^2.0.0",
|
|
34
|
-
"@dxos/
|
|
35
|
-
"@dxos/
|
|
36
|
-
"@dxos/
|
|
37
|
-
"@dxos/
|
|
38
|
-
"@dxos/
|
|
39
|
-
"@dxos/debug": "0.3.
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/log": "0.3.
|
|
43
|
-
"@dxos/messaging": "0.3.
|
|
44
|
-
"@dxos/node-std": "0.3.
|
|
45
|
-
"@dxos/protocols": "0.3.
|
|
46
|
-
"@dxos/
|
|
47
|
-
"@dxos/
|
|
48
|
-
"@dxos/
|
|
34
|
+
"@dxos/context": "0.3.9-main.1d6fb54",
|
|
35
|
+
"@dxos/async": "0.3.9-main.1d6fb54",
|
|
36
|
+
"@dxos/codec-protobuf": "0.3.9-main.1d6fb54",
|
|
37
|
+
"@dxos/crypto": "0.3.9-main.1d6fb54",
|
|
38
|
+
"@dxos/credentials": "0.3.9-main.1d6fb54",
|
|
39
|
+
"@dxos/debug": "0.3.9-main.1d6fb54",
|
|
40
|
+
"@dxos/invariant": "0.3.9-main.1d6fb54",
|
|
41
|
+
"@dxos/keys": "0.3.9-main.1d6fb54",
|
|
42
|
+
"@dxos/log": "0.3.9-main.1d6fb54",
|
|
43
|
+
"@dxos/messaging": "0.3.9-main.1d6fb54",
|
|
44
|
+
"@dxos/node-std": "0.3.9-main.1d6fb54",
|
|
45
|
+
"@dxos/protocols": "0.3.9-main.1d6fb54",
|
|
46
|
+
"@dxos/rpc": "0.3.9-main.1d6fb54",
|
|
47
|
+
"@dxos/util": "0.3.9-main.1d6fb54",
|
|
48
|
+
"@dxos/teleport": "0.3.9-main.1d6fb54"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@swc-node/register": "1.5.4",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"earljs": "~0.1.10",
|
|
56
56
|
"fast-check": "~3.3.0",
|
|
57
57
|
"typescript": "^5.2.2",
|
|
58
|
-
"@dxos/signal": "0.3.
|
|
58
|
+
"@dxos/signal": "0.3.9-main.1d6fb54"
|
|
59
59
|
},
|
|
60
60
|
"publishConfig": {
|
|
61
61
|
"access": "public"
|
package/src/connection-log.ts
CHANGED
|
@@ -12,6 +12,8 @@ import { ComplexMap } from '@dxos/util';
|
|
|
12
12
|
import { ConnectionState, type Swarm } from './swarm';
|
|
13
13
|
import { type WireProtocol } from './wire-protocol';
|
|
14
14
|
|
|
15
|
+
const CONNECTION_GC_THRESHOLD = 1000 * 60 * 15;
|
|
16
|
+
|
|
15
17
|
export enum EventType {
|
|
16
18
|
CONNECTION_STATE_CHANGED = 'CONNECTION_STATE_CHANGED',
|
|
17
19
|
PROTOCOL_ERROR = 'PROTOCOL_ERROR',
|
|
@@ -57,6 +59,7 @@ export class ConnectionLog {
|
|
|
57
59
|
transport: connection.transport && Object.getPrototypeOf(connection.transport).constructor.name,
|
|
58
60
|
protocolExtensions: [], // TODO(dmaretskyi): Fix.
|
|
59
61
|
events: [],
|
|
62
|
+
lastUpdate: new Date(),
|
|
60
63
|
};
|
|
61
64
|
info.connections!.push(connectionInfo);
|
|
62
65
|
this.update.emit();
|
|
@@ -64,6 +67,7 @@ export class ConnectionLog {
|
|
|
64
67
|
connection.stateChanged.on((state) => {
|
|
65
68
|
connectionInfo.state = state;
|
|
66
69
|
connectionInfo.closeReason = connection.closeReason;
|
|
70
|
+
connectionInfo.lastUpdate = new Date();
|
|
67
71
|
connectionInfo.events!.push({
|
|
68
72
|
type: EventType.CONNECTION_STATE_CHANGED,
|
|
69
73
|
newState: state,
|
|
@@ -75,9 +79,12 @@ export class ConnectionLog {
|
|
|
75
79
|
connectionInfo.readBufferSize = stats.readBufferSize;
|
|
76
80
|
connectionInfo.writeBufferSize = stats.writeBufferSize;
|
|
77
81
|
connectionInfo.streams = stats.channels;
|
|
82
|
+
connectionInfo.lastUpdate = new Date();
|
|
78
83
|
this.update.emit();
|
|
79
84
|
});
|
|
80
85
|
|
|
86
|
+
gcSwarm(info);
|
|
87
|
+
|
|
81
88
|
// connection.protocol.protocol?.error.on((error) => {
|
|
82
89
|
// connectionInfo.events!.push({
|
|
83
90
|
// type: EventType.PROTOCOL_ERROR,
|
|
@@ -111,3 +118,9 @@ export class ConnectionLog {
|
|
|
111
118
|
this.update.emit();
|
|
112
119
|
}
|
|
113
120
|
}
|
|
121
|
+
|
|
122
|
+
const gcSwarm = (swarm: SwarmInfo) => {
|
|
123
|
+
swarm.connections = swarm.connections?.filter((connection) => {
|
|
124
|
+
return connection.lastUpdate ? Date.now() - connection.lastUpdate.getTime() < CONNECTION_GC_THRESHOLD : true;
|
|
125
|
+
});
|
|
126
|
+
};
|
package/src/swarm/connection.ts
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
ProtocolError,
|
|
14
14
|
ConnectionResetError,
|
|
15
15
|
ConnectivityError,
|
|
16
|
+
TimeoutError,
|
|
16
17
|
UnknownProtocolError,
|
|
17
18
|
trace,
|
|
18
19
|
} from '@dxos/protocols';
|
|
@@ -177,8 +178,10 @@ export class Connection {
|
|
|
177
178
|
scheduleTask(
|
|
178
179
|
this.connectedTimeoutContext,
|
|
179
180
|
async () => {
|
|
180
|
-
log.info(
|
|
181
|
-
await this.abort(
|
|
181
|
+
log.info(`timeout waiting ${TRANSPORT_CONNECTION_TIMEOUT / 1000}s for transport to connect, aborting`);
|
|
182
|
+
await this.abort(new TimeoutError(`${TRANSPORT_CONNECTION_TIMEOUT / 1000}s for transport to connect`)).catch(
|
|
183
|
+
(err) => this.errors.raise(err),
|
|
184
|
+
);
|
|
182
185
|
},
|
|
183
186
|
TRANSPORT_CONNECTION_TIMEOUT,
|
|
184
187
|
);
|
|
@@ -312,6 +315,18 @@ export class Connection {
|
|
|
312
315
|
} catch (err: any) {
|
|
313
316
|
log.catch(err);
|
|
314
317
|
}
|
|
318
|
+
} else {
|
|
319
|
+
log.info(`graceful close requested when we were in ${lastState} state? aborting`);
|
|
320
|
+
try {
|
|
321
|
+
await this._protocol.abort();
|
|
322
|
+
} catch (err: any) {
|
|
323
|
+
log.catch(err);
|
|
324
|
+
}
|
|
325
|
+
try {
|
|
326
|
+
await this._transport?.destroy();
|
|
327
|
+
} catch (err: any) {
|
|
328
|
+
log.catch(err);
|
|
329
|
+
}
|
|
315
330
|
}
|
|
316
331
|
|
|
317
332
|
log('closed', { peerId: this.ownId });
|
|
@@ -126,14 +126,18 @@ export class LibDataChannelTransport implements Transport {
|
|
|
126
126
|
log.debug('dataChannel.onopen');
|
|
127
127
|
const duplex = new Duplex({
|
|
128
128
|
read: () => {},
|
|
129
|
-
write: (chunk, encoding, callback) => {
|
|
129
|
+
write: async (chunk, encoding, callback) => {
|
|
130
130
|
// todo wait to open
|
|
131
131
|
|
|
132
132
|
if (chunk.length > MAX_MESSAGE_SIZE) {
|
|
133
133
|
this.errors.raise(new Error(`message too large: ${chunk.length} > ${MAX_MESSAGE_SIZE}`));
|
|
134
134
|
}
|
|
135
|
-
|
|
136
|
-
|
|
135
|
+
try {
|
|
136
|
+
dataChannel.send(chunk);
|
|
137
|
+
} catch (err: any) {
|
|
138
|
+
this.errors.raise(err);
|
|
139
|
+
await this._close();
|
|
140
|
+
}
|
|
137
141
|
if (this._channel.bufferedAmount > MAX_BUFFERED_AMOUNT) {
|
|
138
142
|
if (this._writeCallback !== null) {
|
|
139
143
|
log.error("consumer trying to write before we're ready for more data");
|
|
@@ -71,6 +71,7 @@ export class SimplePeerTransport implements Transport {
|
|
|
71
71
|
if (err.errorDetail === 'sctp-failure') {
|
|
72
72
|
this.errors.raise(new ConnectionResetError('sctp-failure from RTCError', err));
|
|
73
73
|
} else {
|
|
74
|
+
log.info('unknown RTCError', { err });
|
|
74
75
|
this.errors.raise(new UnknownProtocolError('unknown RTCError', err));
|
|
75
76
|
}
|
|
76
77
|
// catch more generic simple-peer errors: https://github.com/feross/simple-peer/blob/master/README.md#error-codes
|
|
@@ -80,10 +81,12 @@ export class SimplePeerTransport implements Transport {
|
|
|
80
81
|
case 'ERR_WEBRTC_SUPPORT':
|
|
81
82
|
this.errors.raise(new ProtocolError('WebRTC not supported', err));
|
|
82
83
|
break;
|
|
84
|
+
case 'ERR_SIGNALING':
|
|
85
|
+
this.errors.raise(new ConnectivityError('signaling failure', err));
|
|
86
|
+
break;
|
|
83
87
|
case 'ERR_ICE_CONNECTION_FAILURE':
|
|
84
88
|
case 'ERR_DATA_CHANNEL':
|
|
85
89
|
case 'ERR_CONNECTION_FAILURE':
|
|
86
|
-
case 'ERR_SIGNALING':
|
|
87
90
|
this.errors.raise(new ConnectivityError('unknown communication failure', err));
|
|
88
91
|
break;
|
|
89
92
|
// errors due to library issues or improper API usage
|