@libp2p/tcp 10.1.18 → 10.1.19-a02cb0461
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/index.min.js +1 -1
- package/dist/index.min.js.map +4 -4
- package/dist/src/index.d.ts +0 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/listener.d.ts +3 -4
- package/dist/src/listener.d.ts.map +1 -1
- package/dist/src/listener.js +14 -12
- package/dist/src/listener.js.map +1 -1
- package/dist/src/socket-to-conn.d.ts +5 -12
- package/dist/src/socket-to-conn.d.ts.map +1 -1
- package/dist/src/socket-to-conn.js +98 -174
- package/dist/src/socket-to-conn.js.map +1 -1
- package/dist/src/tcp.d.ts.map +1 -1
- package/dist/src/tcp.js +9 -9
- package/dist/src/tcp.js.map +1 -1
- package/package.json +11 -11
- package/src/index.ts +0 -5
- package/src/listener.ts +16 -15
- package/src/socket-to-conn.ts +114 -201
- package/src/tcp.ts +9 -9
- package/dist/typedoc-urls.json +0 -20
package/dist/src/index.d.ts
CHANGED
|
@@ -51,10 +51,6 @@ export interface TCPOptions {
|
|
|
51
51
|
* An optional number in ms that is used as an inactivity timeout after which the socket will be closed
|
|
52
52
|
*/
|
|
53
53
|
outboundSocketInactivityTimeout?: number;
|
|
54
|
-
/**
|
|
55
|
-
* When closing a socket, wait this long for it to close gracefully before it is closed more forcibly
|
|
56
|
-
*/
|
|
57
|
-
socketCloseTimeout?: number;
|
|
58
54
|
/**
|
|
59
55
|
* Set this property to reject connections when the server's connection count gets high.
|
|
60
56
|
* https://nodejs.org/api/net.html#servermaxconnections
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,SAAS,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAA;AACxK,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAA;IAEvC;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAA;IAExC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,SAAS,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAA;AACxK,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,aAAa,CAAC,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAA;IAEvC;;OAEG;IACH,+BAA+B,CAAC,EAAE,MAAM,CAAA;IAExC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,2BAA2B,CAAC,EAAE,+BAA+B,CAAA;IAE7D;;OAEG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAE3B;;OAEG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAA;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAE9B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,aAAa,GACvB,+BAA+B,GAC/B,aAAa,CAAC,qBAAqB,CAAC,CAAA;AAEtC,MAAM,WAAW,cAAe,SAAQ,oBAAoB,CAAC,aAAa,CAAC,EAAE,gBAAgB;CAE5F;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB,EAAE,gBAAgB;CAExF;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,CAAA;IAC/D,MAAM,EAAE,YAAY,CAAC,wBAAwB,GAAG,kBAAkB,CAAC,CAAA;CACpE;AAED,wBAAgB,GAAG,CAAE,IAAI,GAAE,UAAe,GAAG,CAAC,UAAU,EAAE,aAAa,KAAK,SAAS,CAIpF"}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AA4G9B,MAAM,UAAU,GAAG,CAAE,OAAmB,EAAE;IACxC,OAAO,CAAC,UAAyB,EAAE,EAAE;QACnC,OAAO,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IAClC,CAAC,CAAA;AACH,CAAC"}
|
package/dist/src/listener.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { TypedEventEmitter } from 'main-event';
|
|
2
2
|
import type { CloseServerOnMaxConnectionsOpts, TCPCreateListenerOptions } from './index.js';
|
|
3
|
-
import type { ComponentLogger, Metrics, Listener, ListenerEvents, Upgrader } from '@libp2p/interface';
|
|
3
|
+
import type { ComponentLogger, Metrics, Listener, ListenerEvents, Upgrader, AbortOptions } from '@libp2p/interface';
|
|
4
4
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
5
5
|
interface Context extends TCPCreateListenerOptions {
|
|
6
6
|
upgrader: Upgrader;
|
|
7
|
-
|
|
8
|
-
socketCloseTimeout?: number;
|
|
7
|
+
inactivityTimeout?: number;
|
|
9
8
|
maxConnections?: number;
|
|
10
9
|
backlog?: number;
|
|
11
10
|
metrics?: Metrics;
|
|
@@ -27,7 +26,7 @@ export declare class TCPListener extends TypedEventEmitter<ListenerEvents> imple
|
|
|
27
26
|
getAddrs(): Multiaddr[];
|
|
28
27
|
updateAnnounceAddrs(): void;
|
|
29
28
|
listen(ma: Multiaddr): Promise<void>;
|
|
30
|
-
close(): Promise<void>;
|
|
29
|
+
close(options?: AbortOptions): Promise<void>;
|
|
31
30
|
/**
|
|
32
31
|
* Can resume a stopped or start an inert server
|
|
33
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAI/D,OAAO,KAAK,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAE3F,OAAO,KAAK,EAAE,eAAe,EAA0D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAmB,MAAM,YAAY,CAAA;AAI/D,OAAO,KAAK,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAE3F,OAAO,KAAK,EAAE,eAAe,EAA0D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC3K,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,UAAU,OAAQ,SAAQ,wBAAwB;IAChD,QAAQ,EAAE,QAAQ,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,2BAA2B,CAAC,EAAE,+BAA+B,CAAA;IAC7D,MAAM,EAAE,eAAe,CAAA;CACxB;AA0BD,qBAAa,WAAY,SAAQ,iBAAiB,CAAC,cAAc,CAAE,YAAW,QAAQ;IAUvE,OAAO,CAAC,QAAQ,CAAC,OAAO;IATrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,+DAA+D;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,MAAM,CAAmD;IACjE,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,IAAI,CAAQ;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAEtB,OAAO,EAAE,OAAO;IAgG9C,OAAO,CAAC,QAAQ;IAuEhB,QAAQ,IAAK,SAAS,EAAE;IAoBxB,mBAAmB,IAAK,IAAI;IAItB,MAAM,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrC,KAAK,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBnD;;OAEG;YACW,MAAM;IAkBpB,OAAO,CAAC,KAAK;CAmCd"}
|
package/dist/src/listener.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import net from 'net';
|
|
1
|
+
import net from 'node:net';
|
|
2
2
|
import { AlreadyStartedError, InvalidParametersError, NotStartedError } from '@libp2p/interface';
|
|
3
|
-
import { getThinWaistAddresses } from '@libp2p/utils
|
|
3
|
+
import { getThinWaistAddresses } from '@libp2p/utils';
|
|
4
4
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
5
5
|
import { TypedEventEmitter, setMaxListeners } from 'main-event';
|
|
6
6
|
import { pEvent } from 'p-event';
|
|
@@ -33,6 +33,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
33
33
|
this.context = context;
|
|
34
34
|
context.keepAlive = context.keepAlive ?? true;
|
|
35
35
|
context.noDelay = context.noDelay ?? true;
|
|
36
|
+
context.allowHalfOpen = context.allowHalfOpen ?? false;
|
|
36
37
|
this.shutdownController = new AbortController();
|
|
37
38
|
setMaxListeners(Infinity, this.shutdownController.signal);
|
|
38
39
|
this.log = context.logger.forComponent('libp2p:tcp:listener');
|
|
@@ -121,14 +122,14 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
121
122
|
}
|
|
122
123
|
let maConn;
|
|
123
124
|
try {
|
|
124
|
-
maConn = toMultiaddrConnection(
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
socketCloseTimeout: this.context.socketCloseTimeout,
|
|
125
|
+
maConn = toMultiaddrConnection({
|
|
126
|
+
socket,
|
|
127
|
+
inactivityTimeout: this.context.inactivityTimeout,
|
|
128
128
|
metrics: this.metrics?.events,
|
|
129
129
|
metricPrefix: `${this.addr} `,
|
|
130
|
-
|
|
131
|
-
|
|
130
|
+
direction: 'inbound',
|
|
131
|
+
localAddr: this.status.listeningAddr,
|
|
132
|
+
log: this.context.logger.forComponent('libp2p:tcp:connection')
|
|
132
133
|
});
|
|
133
134
|
}
|
|
134
135
|
catch (err) {
|
|
@@ -162,6 +163,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
162
163
|
});
|
|
163
164
|
if (this.context.closeServerOnMaxConnections != null &&
|
|
164
165
|
this.sockets.size >= this.context.closeServerOnMaxConnections.closeAbove) {
|
|
166
|
+
this.log('pausing incoming connections as limit is exceeded - %d/%d', this.sockets.size, this.context.closeServerOnMaxConnections.closeAbove);
|
|
165
167
|
this.pause();
|
|
166
168
|
}
|
|
167
169
|
})
|
|
@@ -206,10 +208,10 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
206
208
|
throw err;
|
|
207
209
|
}
|
|
208
210
|
}
|
|
209
|
-
async close() {
|
|
211
|
+
async close(options) {
|
|
210
212
|
const events = [];
|
|
211
213
|
if (this.server.listening) {
|
|
212
|
-
events.push(pEvent(this.server, 'close'));
|
|
214
|
+
events.push(pEvent(this.server, 'close', options));
|
|
213
215
|
}
|
|
214
216
|
// shut down the server socket, permanently
|
|
215
217
|
this.pause(true);
|
|
@@ -219,7 +221,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
219
221
|
// the server socket in case new sockets are opened during the shutdown
|
|
220
222
|
this.sockets.forEach(socket => {
|
|
221
223
|
if (socket.readable) {
|
|
222
|
-
events.push(pEvent(socket, 'close'));
|
|
224
|
+
events.push(pEvent(socket, 'close', options));
|
|
223
225
|
socket.destroy();
|
|
224
226
|
}
|
|
225
227
|
});
|
|
@@ -250,7 +252,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
250
252
|
if (!this.server.listening || this.status.code !== TCPListenerStatusCode.ACTIVE) {
|
|
251
253
|
return;
|
|
252
254
|
}
|
|
253
|
-
this.log('
|
|
255
|
+
this.log('%s server on %s', permanent ? 'closing' : 'pausing', this.server.address());
|
|
254
256
|
// NodeJS implementation tracks listening status with `this._handle` property.
|
|
255
257
|
// - Server.close() sets this._handle to null immediately. If this._handle is null, NotStartedError is thrown
|
|
256
258
|
// - Server.listening returns `this._handle !== null` https://github.com/nodejs/node/blob/386d761943bb1b217fba27d6b80b658c23009e60/lib/net.js#L1675
|
package/dist/src/listener.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MultiaddrConnection } from '@libp2p/interface';
|
|
2
|
+
import type { AbstractMultiaddrConnectionInit } from '@libp2p/utils';
|
|
2
3
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
3
4
|
import type { Socket } from 'net';
|
|
4
|
-
interface
|
|
5
|
-
|
|
5
|
+
export interface TCPSocketMultiaddrConnectionInit extends Omit<AbstractMultiaddrConnectionInit, 'name' | 'stream' | 'remoteAddr'> {
|
|
6
|
+
socket: Socket;
|
|
6
7
|
remoteAddr?: Multiaddr;
|
|
7
|
-
localAddr?: Multiaddr;
|
|
8
|
-
socketInactivityTimeout?: number;
|
|
9
|
-
socketCloseTimeout?: number;
|
|
10
|
-
metrics?: CounterGroup;
|
|
11
|
-
metricPrefix?: string;
|
|
12
|
-
logger: ComponentLogger;
|
|
13
|
-
direction: 'inbound' | 'outbound';
|
|
14
8
|
}
|
|
15
9
|
/**
|
|
16
10
|
* Convert a socket into a MultiaddrConnection
|
|
17
11
|
* https://github.com/libp2p/interface-transport#multiaddrconnection
|
|
18
12
|
*/
|
|
19
|
-
export declare const toMultiaddrConnection: (
|
|
20
|
-
export {};
|
|
13
|
+
export declare const toMultiaddrConnection: (init: TCPSocketMultiaddrConnectionInit) => MultiaddrConnection;
|
|
21
14
|
//# sourceMappingURL=socket-to-conn.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-to-conn.d.ts","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"socket-to-conn.d.ts","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAgB,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,KAAK,EAAE,+BAA+B,EAAc,MAAM,eAAe,CAAA;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAGjC,MAAM,WAAW,gCAAiC,SAAQ,IAAI,CAAC,+BAA+B,EAAE,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAC;IAC/H,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,SAAS,CAAA;CACvB;AA4HD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,gCAAgC,KAAG,mBAE9E,CAAA"}
|
|
@@ -1,183 +1,107 @@
|
|
|
1
1
|
import { InvalidParametersError, TimeoutError } from '@libp2p/interface';
|
|
2
|
-
import { ipPortToMultiaddr
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
export const toMultiaddrConnection = (socket, options) => {
|
|
13
|
-
let closePromise;
|
|
14
|
-
const log = options.logger.forComponent('libp2p:tcp:socket');
|
|
15
|
-
const direction = options.direction;
|
|
16
|
-
const metrics = options.metrics;
|
|
17
|
-
const metricPrefix = options.metricPrefix ?? '';
|
|
18
|
-
const inactivityTimeout = options.socketInactivityTimeout ?? SOCKET_TIMEOUT;
|
|
19
|
-
const closeTimeout = options.socketCloseTimeout ?? CLOSE_TIMEOUT;
|
|
20
|
-
let timedOut = false;
|
|
21
|
-
let errored = false;
|
|
22
|
-
// Check if we are connected on a unix path
|
|
23
|
-
if (options.listeningAddr?.getPath() != null) {
|
|
24
|
-
options.remoteAddr = options.listeningAddr;
|
|
25
|
-
}
|
|
26
|
-
if (options.remoteAddr?.getPath() != null) {
|
|
27
|
-
options.localAddr = options.remoteAddr;
|
|
28
|
-
}
|
|
29
|
-
// handle socket errors
|
|
30
|
-
socket.on('error', err => {
|
|
31
|
-
errored = true;
|
|
32
|
-
if (!timedOut) {
|
|
33
|
-
log.error('%s socket error - %e', direction, err);
|
|
34
|
-
metrics?.increment({ [`${metricPrefix}error`]: true });
|
|
35
|
-
}
|
|
36
|
-
socket.destroy();
|
|
37
|
-
maConn.timeline.close = Date.now();
|
|
38
|
-
});
|
|
39
|
-
let remoteAddr;
|
|
40
|
-
if (options.remoteAddr != null) {
|
|
41
|
-
remoteAddr = options.remoteAddr;
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
if (socket.remoteAddress == null || socket.remotePort == null) {
|
|
45
|
-
// this can be undefined if the socket is destroyed (for example, if the client disconnected)
|
|
46
|
-
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#socketremoteaddress
|
|
47
|
-
throw new InvalidParametersError('Could not determine remote address or port');
|
|
2
|
+
import { AbstractMultiaddrConnection, ipPortToMultiaddr } from '@libp2p/utils';
|
|
3
|
+
import { Unix } from '@multiformats/multiaddr-matcher';
|
|
4
|
+
import { pEvent } from 'p-event';
|
|
5
|
+
class TCPSocketMultiaddrConnection extends AbstractMultiaddrConnection {
|
|
6
|
+
socket;
|
|
7
|
+
constructor(init) {
|
|
8
|
+
let remoteAddr = init.remoteAddr;
|
|
9
|
+
// check if we are connected on a unix path
|
|
10
|
+
if (init.localAddr != null && Unix.matches(init.localAddr)) {
|
|
11
|
+
remoteAddr = init.localAddr;
|
|
48
12
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
// by default there is no timeout
|
|
55
|
-
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#socketsettimeouttimeout-callback
|
|
56
|
-
socket.setTimeout(inactivityTimeout);
|
|
57
|
-
socket.once('timeout', () => {
|
|
58
|
-
timedOut = true;
|
|
59
|
-
log('%s %s socket read timeout', direction, lOptsStr);
|
|
60
|
-
metrics?.increment({ [`${metricPrefix}timeout`]: true });
|
|
61
|
-
// if the socket times out due to inactivity we must manually close the connection
|
|
62
|
-
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#event-timeout
|
|
63
|
-
socket.destroy(new TimeoutError());
|
|
64
|
-
maConn.timeline.close = Date.now();
|
|
65
|
-
});
|
|
66
|
-
socket.once('close', () => {
|
|
67
|
-
// record metric for clean exit
|
|
68
|
-
if (!timedOut && !errored) {
|
|
69
|
-
log('%s %s socket close', direction, lOptsStr);
|
|
70
|
-
metrics?.increment({ [`${metricPrefix}close`]: true });
|
|
71
|
-
}
|
|
72
|
-
// In instances where `close` was not explicitly called,
|
|
73
|
-
// such as an iterable stream ending, ensure we have set the close
|
|
74
|
-
// timeline
|
|
75
|
-
socket.destroy();
|
|
76
|
-
maConn.timeline.close = Date.now();
|
|
77
|
-
});
|
|
78
|
-
socket.once('end', () => {
|
|
79
|
-
// the remote sent a FIN packet which means no more data will be sent
|
|
80
|
-
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#event-end
|
|
81
|
-
log('%s %s socket end', direction, lOptsStr);
|
|
82
|
-
metrics?.increment({ [`${metricPrefix}end`]: true });
|
|
83
|
-
});
|
|
84
|
-
const maConn = {
|
|
85
|
-
async sink(source) {
|
|
86
|
-
try {
|
|
87
|
-
await sink((async function* () {
|
|
88
|
-
for await (const buf of source) {
|
|
89
|
-
if (buf instanceof Uint8Array) {
|
|
90
|
-
yield buf;
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
yield buf.subarray();
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
})());
|
|
13
|
+
else if (remoteAddr == null) {
|
|
14
|
+
if (init.socket.remoteAddress == null || init.socket.remotePort == null) {
|
|
15
|
+
// this can be undefined if the socket is destroyed (for example, if the client disconnected)
|
|
16
|
+
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#socketremoteaddress
|
|
17
|
+
throw new InvalidParametersError('Could not determine remote address or port');
|
|
97
18
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
if
|
|
120
|
-
|
|
19
|
+
remoteAddr = ipPortToMultiaddr(init.socket.remoteAddress, init.socket.remotePort);
|
|
20
|
+
}
|
|
21
|
+
super({
|
|
22
|
+
...init,
|
|
23
|
+
remoteAddr
|
|
24
|
+
});
|
|
25
|
+
this.socket = init.socket;
|
|
26
|
+
// handle incoming data
|
|
27
|
+
this.socket.on('data', buf => {
|
|
28
|
+
this.onData(buf);
|
|
29
|
+
});
|
|
30
|
+
// handle socket errors
|
|
31
|
+
this.socket.on('error', err => {
|
|
32
|
+
this.log('tcp error', remoteAddr, err);
|
|
33
|
+
this.abort(err);
|
|
34
|
+
});
|
|
35
|
+
// by default there is no timeout
|
|
36
|
+
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#socketsettimeouttimeout-callback
|
|
37
|
+
this.socket.setTimeout(init.inactivityTimeout ?? (2 * 60 * 1_000));
|
|
38
|
+
this.socket.once('timeout', () => {
|
|
39
|
+
this.log('tcp timeout', remoteAddr);
|
|
40
|
+
// if the socket times out due to inactivity we must manually close the connection
|
|
41
|
+
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#event-timeout
|
|
42
|
+
this.abort(new TimeoutError());
|
|
43
|
+
});
|
|
44
|
+
this.socket.once('end', () => {
|
|
45
|
+
this.log('tcp end', remoteAddr);
|
|
46
|
+
// the remote sent a FIN packet which means no more data will be sent
|
|
47
|
+
// https://nodejs.org/dist/latest-v16.x/docs/api/net.html#event-end
|
|
48
|
+
// half open TCP sockets are disabled by default so Node.js should send a
|
|
49
|
+
// FIN in response to this event and then emit a 'close' event, during
|
|
50
|
+
// which we tear down the MultiaddrConnection so there is nothing to do
|
|
51
|
+
// until that occurs
|
|
52
|
+
this.onTransportClosed();
|
|
53
|
+
});
|
|
54
|
+
this.socket.once('close', hadError => {
|
|
55
|
+
this.log('tcp close', remoteAddr);
|
|
56
|
+
if (hadError) {
|
|
57
|
+
this.abort(new Error('TCP transmission error'));
|
|
121
58
|
return;
|
|
122
59
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
});
|
|
140
|
-
log('%s %s socket drained', direction, lOptsStr);
|
|
141
|
-
}
|
|
142
|
-
await Promise.all([
|
|
143
|
-
raceEvent(eventTarget, 'close', signal, {
|
|
144
|
-
errorEvent: 'error'
|
|
145
|
-
}),
|
|
146
|
-
// all bytes have been sent we can destroy the socket
|
|
147
|
-
socket.destroy()
|
|
148
|
-
]);
|
|
149
|
-
}
|
|
150
|
-
catch (err) {
|
|
151
|
-
this.abort(err);
|
|
152
|
-
}
|
|
153
|
-
finally {
|
|
154
|
-
closePromise.resolve();
|
|
60
|
+
this.onTransportClosed();
|
|
61
|
+
});
|
|
62
|
+
// the socket can accept more data
|
|
63
|
+
this.socket.on('drain', () => {
|
|
64
|
+
this.log('tcp drain');
|
|
65
|
+
this.safeDispatchEvent('drain');
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
sendData(data) {
|
|
69
|
+
let sentBytes = 0;
|
|
70
|
+
let canSendMore = true;
|
|
71
|
+
for (const buf of data) {
|
|
72
|
+
sentBytes += buf.byteLength;
|
|
73
|
+
canSendMore = this.socket.write(buf);
|
|
74
|
+
if (!canSendMore) {
|
|
75
|
+
break;
|
|
155
76
|
}
|
|
156
|
-
},
|
|
157
|
-
abort: (err) => {
|
|
158
|
-
log('%s %s socket abort due to error - %e', direction, lOptsStr, err);
|
|
159
|
-
// the abortSignalListener may already destroyed the socket with an error
|
|
160
|
-
socket.destroy();
|
|
161
|
-
// closing a socket is always asynchronous (must wait for "close" event)
|
|
162
|
-
// but the tests expect this to be a synchronous operation so we have to
|
|
163
|
-
// set the close time here. the tests should be refactored to reflect
|
|
164
|
-
// reality.
|
|
165
|
-
maConn.timeline.close = Date.now();
|
|
166
|
-
},
|
|
167
|
-
log
|
|
168
|
-
};
|
|
169
|
-
return maConn;
|
|
170
|
-
};
|
|
171
|
-
function socketToEventTarget(obj) {
|
|
172
|
-
const eventTarget = {
|
|
173
|
-
addEventListener: (type, cb) => {
|
|
174
|
-
obj.addListener(type, cb);
|
|
175
|
-
},
|
|
176
|
-
removeEventListener: (type, cb) => {
|
|
177
|
-
obj.removeListener(type, cb);
|
|
178
77
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
78
|
+
return {
|
|
79
|
+
sentBytes,
|
|
80
|
+
canSendMore
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
async sendClose(options) {
|
|
84
|
+
if (this.socket.destroyed) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
this.socket.destroySoon();
|
|
88
|
+
await pEvent(this.socket, 'close', options);
|
|
89
|
+
}
|
|
90
|
+
sendReset() {
|
|
91
|
+
this.socket.resetAndDestroy();
|
|
92
|
+
}
|
|
93
|
+
sendPause() {
|
|
94
|
+
this.socket.pause();
|
|
95
|
+
}
|
|
96
|
+
sendResume() {
|
|
97
|
+
this.socket.resume();
|
|
98
|
+
}
|
|
182
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Convert a socket into a MultiaddrConnection
|
|
102
|
+
* https://github.com/libp2p/interface-transport#multiaddrconnection
|
|
103
|
+
*/
|
|
104
|
+
export const toMultiaddrConnection = (init) => {
|
|
105
|
+
return new TCPSocketMultiaddrConnection(init);
|
|
106
|
+
};
|
|
183
107
|
//# sourceMappingURL=socket-to-conn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-to-conn.js","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"socket-to-conn.js","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAYhC,MAAM,4BAA6B,SAAQ,2BAA2B;IAC5D,MAAM,CAAQ;IAEtB,YAAa,IAAsC;QACjD,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QAEhC,2CAA2C;QAC3C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3D,UAAU,GAAG,IAAI,CAAC,SAAS,CAAA;QAC7B,CAAC;aAAM,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;gBACxE,6FAA6F;gBAC7F,6EAA6E;gBAC7E,MAAM,IAAI,sBAAsB,CAAC,4CAA4C,CAAC,CAAA;YAChF,CAAC;YAED,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACnF,CAAC;QAED,KAAK,CAAC;YACJ,GAAG,IAAI;YACP,UAAU;SACX,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAEzB,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAClB,CAAC,CAAC,CAAA;QAEF,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;YAEtC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,iCAAiC;QACjC,0FAA0F;QAC1F,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAA;QAElE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;YAC/B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;YACnC,kFAAkF;YAClF,uEAAuE;YACvE,IAAI,CAAC,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;YAC3B,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;YAE/B,qEAAqE;YACrE,mEAAmE;YACnE,yEAAyE;YACzE,sEAAsE;YACtE,uEAAuE;YACvE,oBAAoB;YACpB,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;YAEjC,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAA;gBAC/C,OAAM;YACR,CAAC;YAED,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC1B,CAAC,CAAC,CAAA;QAEF,kCAAkC;QAClC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC3B,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAErB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,QAAQ,CAAE,IAAoB;QAC5B,IAAI,SAAS,GAAG,CAAC,CAAA;QACjB,IAAI,WAAW,GAAG,IAAI,CAAA;QAEtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,SAAS,IAAI,GAAG,CAAC,UAAU,CAAA;YAC3B,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAEpC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAK;YACP,CAAC;QACH,CAAC;QAED,OAAO;YACL,SAAS;YACT,WAAW;SACZ,CAAA;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAE,OAAsB;QACrC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAM;QACR,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAA;QAEzB,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC;IAED,SAAS;QACP,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAA;IAC/B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAA;IACtB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAsC,EAAuB,EAAE;IACnG,OAAO,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC,CAAA"}
|
package/dist/src/tcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcp.d.ts","sourceRoot":"","sources":["../../src/tcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAA4B,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAMlG,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,aAAa,EAAE,cAAc,EAAc,UAAU,EAAE,MAAM,YAAY,CAAA;AAChI,OAAO,KAAK,EAAU,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAuB,MAAM,mBAAmB,CAAA;AACrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAA8C,MAAM,KAAK,CAAA;AAE7E,qBAAa,GAAI,YAAW,SAAS,CAAC,aAAa,CAAC;IAClD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,aAAa,EAAE,OAAO,GAAE,UAAe;IAmBhE,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAO;IAEjC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAgB;IAE7C,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAEK,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"tcp.d.ts","sourceRoot":"","sources":["../../src/tcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAA4B,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAMlG,OAAO,KAAK,EAAE,aAAa,EAAE,wBAAwB,EAAE,aAAa,EAAE,cAAc,EAAc,UAAU,EAAE,MAAM,YAAY,CAAA;AAChI,OAAO,KAAK,EAAU,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAuB,MAAM,mBAAmB,CAAA;AACrG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAA8C,MAAM,KAAK,CAAA;AAE7E,qBAAa,GAAI,YAAW,SAAS,CAAC,aAAa,CAAC;IAClD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAY;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,aAAa,EAAE,OAAO,GAAE,UAAe;IAmBhE,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAO;IAEjC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,iBAAgB;IAE7C,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAEK,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAoClE,QAAQ,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAyExE;;;;OAIG;IACH,cAAc,CAAE,OAAO,EAAE,wBAAwB,GAAG,QAAQ;IAa5D;;OAEG;IACH,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAInD;;OAEG;IACH,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;CAGlD"}
|
package/dist/src/tcp.js
CHANGED
|
@@ -63,17 +63,18 @@ export class TCP {
|
|
|
63
63
|
async dial(ma, options) {
|
|
64
64
|
options.keepAlive = options.keepAlive ?? true;
|
|
65
65
|
options.noDelay = options.noDelay ?? true;
|
|
66
|
+
options.allowHalfOpen = options.allowHalfOpen ?? false;
|
|
66
67
|
// options.signal destroys the socket before 'connect' event
|
|
67
68
|
const socket = await this._connect(ma, options);
|
|
68
69
|
let maConn;
|
|
69
70
|
try {
|
|
70
|
-
maConn = toMultiaddrConnection(
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
socketCloseTimeout: this.opts.socketCloseTimeout,
|
|
71
|
+
maConn = toMultiaddrConnection({
|
|
72
|
+
socket,
|
|
73
|
+
inactivityTimeout: this.opts.outboundSocketInactivityTimeout,
|
|
74
74
|
metrics: this.metrics?.events,
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
direction: 'outbound',
|
|
76
|
+
remoteAddr: ma,
|
|
77
|
+
log: this.log.newScope('connection')
|
|
77
78
|
});
|
|
78
79
|
}
|
|
79
80
|
catch (err) {
|
|
@@ -102,7 +103,7 @@ export class TCP {
|
|
|
102
103
|
...(this.opts.dialOpts ?? {}),
|
|
103
104
|
...options
|
|
104
105
|
});
|
|
105
|
-
this.log('dialing %a', ma);
|
|
106
|
+
this.log('dialing %a with opts %o', ma, cOpts);
|
|
106
107
|
rawSocket = net.connect(cOpts);
|
|
107
108
|
const onError = (err) => {
|
|
108
109
|
this.log.error('dial to %a errored - %e', ma, err);
|
|
@@ -163,8 +164,7 @@ export class TCP {
|
|
|
163
164
|
maxConnections: this.opts.maxConnections,
|
|
164
165
|
backlog: this.opts.backlog,
|
|
165
166
|
closeServerOnMaxConnections: this.opts.closeServerOnMaxConnections,
|
|
166
|
-
|
|
167
|
-
socketCloseTimeout: this.opts.socketCloseTimeout,
|
|
167
|
+
inactivityTimeout: this.opts.inboundSocketInactivityTimeout,
|
|
168
168
|
metrics: this.components.metrics,
|
|
169
169
|
logger: this.components.logger
|
|
170
170
|
});
|
package/dist/src/tcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../src/tcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAClG,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAMjD,MAAM,OAAO,GAAG;IACG,IAAI,CAAY;IAChB,OAAO,CAAa;IACpB,UAAU,CAAe;IACzB,GAAG,CAAQ;IAE5B,YAAa,UAAyB,EAAE,UAAsB,EAAE;QAC9D,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QACvD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAA;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,OAAO,GAAG;gBACb,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,gCAAgC,EAAE;oBAChF,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,0CAA0C;iBACjD,CAAC;gBACF,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,gCAAgC,EAAE;oBAChF,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,0CAA0C;iBACjD,CAAC;aACH,CAAA;QACH,CAAC;IACH,CAAC;IAEQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAA;IAExB,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,aAAa,CAAA;IAEpC,CAAC,mBAAmB,CAAC,GAAa;QACzC,mBAAmB;KACpB,CAAA;IAED,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAAuB;QAChD,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAA;QAC7C,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../src/tcp.ts"],"names":[],"mappings":"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"}
|