@libp2p/tcp 8.0.12 → 8.0.13-05b52d69c
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 -5
- package/dist/src/index.d.ts +6 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +19 -17
- package/dist/src/index.js.map +1 -1
- package/dist/src/listener.d.ts +3 -0
- package/dist/src/listener.d.ts.map +1 -1
- package/dist/src/listener.js +29 -22
- package/dist/src/listener.js.map +1 -1
- package/dist/src/socket-to-conn.d.ts +2 -0
- package/dist/src/socket-to-conn.d.ts.map +1 -1
- package/dist/src/socket-to-conn.js +8 -3
- package/dist/src/socket-to-conn.js.map +1 -1
- package/package.json +9 -9
- package/src/index.ts +22 -19
- package/src/listener.ts +31 -23
- package/src/socket-to-conn.ts +11 -4
- package/dist/typedoc-urls.json +0 -16
package/dist/src/listener.js
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
import net from 'net';
|
|
2
2
|
import { CodeError } from '@libp2p/interface/errors';
|
|
3
3
|
import { TypedEventEmitter, CustomEvent } from '@libp2p/interface/events';
|
|
4
|
-
import { logger } from '@libp2p/logger';
|
|
5
4
|
import { CODE_P2P } from './constants.js';
|
|
6
5
|
import { toMultiaddrConnection } from './socket-to-conn.js';
|
|
7
6
|
import { getMultiaddrs, multiaddrToNetConfig } from './utils.js';
|
|
8
|
-
const log = logger('libp2p:tcp:listener');
|
|
9
7
|
/**
|
|
10
8
|
* Attempts to close the given maConn. If a failure occurs, it will be logged
|
|
11
9
|
*/
|
|
12
|
-
async function attemptClose(maConn) {
|
|
10
|
+
async function attemptClose(maConn, options) {
|
|
13
11
|
try {
|
|
14
12
|
await maConn.close();
|
|
15
13
|
}
|
|
16
14
|
catch (err) {
|
|
17
|
-
log.error('an error occurred closing the connection', err);
|
|
15
|
+
options.log.error('an error occurred closing the connection', err);
|
|
18
16
|
}
|
|
19
17
|
}
|
|
20
18
|
var TCPListenerStatusCode;
|
|
@@ -36,10 +34,12 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
36
34
|
status = { code: TCPListenerStatusCode.INACTIVE };
|
|
37
35
|
metrics;
|
|
38
36
|
addr;
|
|
37
|
+
log;
|
|
39
38
|
constructor(context) {
|
|
40
39
|
super();
|
|
41
40
|
this.context = context;
|
|
42
41
|
context.keepAlive = context.keepAlive ?? true;
|
|
42
|
+
this.log = context.logger.forComponent('libp2p:tcp:listener');
|
|
43
43
|
this.addr = 'unknown';
|
|
44
44
|
this.server = net.createServer(context, this.onSocket.bind(this));
|
|
45
45
|
// https://nodejs.org/api/net.html#servermaxconnections
|
|
@@ -120,7 +120,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
120
120
|
}
|
|
121
121
|
// Avoid uncaught errors caused by unstable connections
|
|
122
122
|
socket.on('error', err => {
|
|
123
|
-
log('socket error', err);
|
|
123
|
+
this.log('socket error', err);
|
|
124
124
|
this.metrics?.events.increment({ [`${this.addr} error`]: true });
|
|
125
125
|
});
|
|
126
126
|
let maConn;
|
|
@@ -130,19 +130,20 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
130
130
|
socketInactivityTimeout: this.context.socketInactivityTimeout,
|
|
131
131
|
socketCloseTimeout: this.context.socketCloseTimeout,
|
|
132
132
|
metrics: this.metrics?.events,
|
|
133
|
-
metricPrefix: `${this.addr}
|
|
133
|
+
metricPrefix: `${this.addr} `,
|
|
134
|
+
logger: this.context.logger
|
|
134
135
|
});
|
|
135
136
|
}
|
|
136
137
|
catch (err) {
|
|
137
|
-
log.error('inbound connection failed', err);
|
|
138
|
+
this.log.error('inbound connection failed', err);
|
|
138
139
|
this.metrics?.errors.increment({ [`${this.addr} inbound_to_connection`]: true });
|
|
139
140
|
return;
|
|
140
141
|
}
|
|
141
|
-
log('new inbound connection %s', maConn.remoteAddr);
|
|
142
|
+
this.log('new inbound connection %s', maConn.remoteAddr);
|
|
142
143
|
try {
|
|
143
144
|
this.context.upgrader.upgradeInbound(maConn)
|
|
144
145
|
.then((conn) => {
|
|
145
|
-
log('inbound connection upgraded %s', maConn.remoteAddr);
|
|
146
|
+
this.log('inbound connection upgraded %s', maConn.remoteAddr);
|
|
146
147
|
this.connections.add(maConn);
|
|
147
148
|
socket.once('close', () => {
|
|
148
149
|
this.connections.delete(maConn);
|
|
@@ -153,7 +154,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
153
154
|
// we can do. resume() will be called again every time a connection is dropped, which
|
|
154
155
|
// acts as an eventual retry mechanism. onListenError allows the consumer act on this.
|
|
155
156
|
this.resume().catch(e => {
|
|
156
|
-
log.error('error attempting to listen server once connection count under limit', e);
|
|
157
|
+
this.log.error('error attempting to listen server once connection count under limit', e);
|
|
157
158
|
this.context.closeServerOnMaxConnections?.onListenError?.(e);
|
|
158
159
|
});
|
|
159
160
|
}
|
|
@@ -164,25 +165,29 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
164
165
|
if (this.context.closeServerOnMaxConnections != null &&
|
|
165
166
|
this.connections.size >= this.context.closeServerOnMaxConnections.closeAbove) {
|
|
166
167
|
this.pause(false).catch(e => {
|
|
167
|
-
log.error('error attempting to close server once connection count over limit', e);
|
|
168
|
+
this.log.error('error attempting to close server once connection count over limit', e);
|
|
168
169
|
});
|
|
169
170
|
}
|
|
170
171
|
this.dispatchEvent(new CustomEvent('connection', { detail: conn }));
|
|
171
172
|
})
|
|
172
173
|
.catch(async (err) => {
|
|
173
|
-
log.error('inbound connection failed', err);
|
|
174
|
+
this.log.error('inbound connection failed', err);
|
|
174
175
|
this.metrics?.errors.increment({ [`${this.addr} inbound_upgrade`]: true });
|
|
175
|
-
await attemptClose(maConn
|
|
176
|
+
await attemptClose(maConn, {
|
|
177
|
+
log: this.log
|
|
178
|
+
});
|
|
176
179
|
})
|
|
177
180
|
.catch(err => {
|
|
178
|
-
log.error('closing inbound connection failed', err);
|
|
181
|
+
this.log.error('closing inbound connection failed', err);
|
|
179
182
|
});
|
|
180
183
|
}
|
|
181
184
|
catch (err) {
|
|
182
|
-
log.error('inbound connection failed', err);
|
|
183
|
-
attemptClose(maConn
|
|
185
|
+
this.log.error('inbound connection failed', err);
|
|
186
|
+
attemptClose(maConn, {
|
|
187
|
+
log: this.log
|
|
188
|
+
})
|
|
184
189
|
.catch(err => {
|
|
185
|
-
log.error('closing inbound connection failed', err);
|
|
190
|
+
this.log.error('closing inbound connection failed', err);
|
|
186
191
|
this.metrics?.errors.increment({ [`${this.addr} inbound_closing_failed`]: true });
|
|
187
192
|
});
|
|
188
193
|
}
|
|
@@ -212,7 +217,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
212
217
|
}
|
|
213
218
|
}
|
|
214
219
|
catch (err) {
|
|
215
|
-
log.error('could not turn %s:%s into multiaddr', address.address, address.port, err);
|
|
220
|
+
this.log.error('could not turn %s:%s into multiaddr', address.address, address.port, err);
|
|
216
221
|
}
|
|
217
222
|
}
|
|
218
223
|
return addrs.map(ma => peerId != null ? ma.encapsulate(`/p2p/${peerId}`) : ma);
|
|
@@ -241,9 +246,11 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
241
246
|
async close() {
|
|
242
247
|
// Close connections and server the same time to avoid any race condition
|
|
243
248
|
await Promise.all([
|
|
244
|
-
Promise.all(Array.from(this.connections.values()).map(async (maConn) => attemptClose(maConn
|
|
249
|
+
Promise.all(Array.from(this.connections.values()).map(async (maConn) => attemptClose(maConn, {
|
|
250
|
+
log: this.log
|
|
251
|
+
}))),
|
|
245
252
|
this.pause(true).catch(e => {
|
|
246
|
-
log.error('error attempting to close server once connection count over limit', e);
|
|
253
|
+
this.log.error('error attempting to close server once connection count over limit', e);
|
|
247
254
|
})
|
|
248
255
|
]);
|
|
249
256
|
}
|
|
@@ -261,7 +268,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
261
268
|
this.server.listen(netConfig, resolve);
|
|
262
269
|
});
|
|
263
270
|
this.status = { ...this.status, code: TCPListenerStatusCode.ACTIVE };
|
|
264
|
-
log('Listening on %s', this.server.address());
|
|
271
|
+
this.log('Listening on %s', this.server.address());
|
|
265
272
|
}
|
|
266
273
|
async pause(permanent) {
|
|
267
274
|
if (!this.server.listening && this.status.code === TCPListenerStatusCode.PAUSED && permanent) {
|
|
@@ -271,7 +278,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
271
278
|
if (!this.server.listening || this.status.code !== TCPListenerStatusCode.ACTIVE) {
|
|
272
279
|
return;
|
|
273
280
|
}
|
|
274
|
-
log('Closing server on %s', this.server.address());
|
|
281
|
+
this.log('Closing server on %s', this.server.address());
|
|
275
282
|
// NodeJS implementation tracks listening status with `this._handle` property.
|
|
276
283
|
// - Server.close() sets this._handle to null immediately. If this._handle is null, ERR_SERVER_NOT_RUNNING is thrown
|
|
277
284
|
// - 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":"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"}
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../src/listener.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ComponentLogger } from '@libp2p/interface';
|
|
1
2
|
import type { MultiaddrConnection } from '@libp2p/interface/connection';
|
|
2
3
|
import type { CounterGroup } from '@libp2p/interface/metrics';
|
|
3
4
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
@@ -10,6 +11,7 @@ interface ToConnectionOptions {
|
|
|
10
11
|
socketCloseTimeout?: number;
|
|
11
12
|
metrics?: CounterGroup;
|
|
12
13
|
metricPrefix?: string;
|
|
14
|
+
logger: ComponentLogger;
|
|
13
15
|
}
|
|
14
16
|
/**
|
|
15
17
|
* Convert a socket into a MultiaddrConnection
|
|
@@ -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":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAA;AAEjC,UAAU,mBAAmB;IAC3B,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,WAAY,MAAM,WAAW,mBAAmB,KAAG,mBAiKpF,CAAA"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { CodeError } from '@libp2p/interface/errors';
|
|
2
|
-
import { logger } from '@libp2p/logger';
|
|
3
2
|
import { ipPortToMultiaddr as toMultiaddr } from '@libp2p/utils/ip-port-to-multiaddr';
|
|
4
3
|
// @ts-expect-error no types
|
|
5
4
|
import toIterable from 'stream-to-it';
|
|
6
5
|
import { CLOSE_TIMEOUT, SOCKET_TIMEOUT } from './constants.js';
|
|
7
6
|
import { multiaddrToNetConfig } from './utils.js';
|
|
8
|
-
const log = logger('libp2p:tcp:socket');
|
|
9
7
|
/**
|
|
10
8
|
* Convert a socket into a MultiaddrConnection
|
|
11
9
|
* https://github.com/libp2p/interface-transport#multiaddrconnection
|
|
12
10
|
*/
|
|
13
11
|
export const toMultiaddrConnection = (socket, options) => {
|
|
12
|
+
const log = options.logger.forComponent('libp2p:tcp:socket');
|
|
14
13
|
const metrics = options.metrics;
|
|
15
14
|
const metricPrefix = options.metricPrefix ?? '';
|
|
16
15
|
const inactivityTimeout = options.socketInactivityTimeout ?? SOCKET_TIMEOUT;
|
|
@@ -93,7 +92,13 @@ export const toMultiaddrConnection = (socket, options) => {
|
|
|
93
92
|
log('%s socket was already destroyed when trying to close', lOptsStr);
|
|
94
93
|
return;
|
|
95
94
|
}
|
|
96
|
-
|
|
95
|
+
if (options.signal == null) {
|
|
96
|
+
const signal = AbortSignal.timeout(closeTimeout);
|
|
97
|
+
options = {
|
|
98
|
+
...options,
|
|
99
|
+
signal
|
|
100
|
+
};
|
|
101
|
+
}
|
|
97
102
|
try {
|
|
98
103
|
log('%s closing socket', lOptsStr);
|
|
99
104
|
await new Promise((resolve, reject) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"socket-to-conn.js","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"socket-to-conn.js","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/tcp",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.13-05b52d69c",
|
|
4
4
|
"description": "A TCP transport for libp2p",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/transport-tcp#readme",
|
|
@@ -51,21 +51,21 @@
|
|
|
51
51
|
"test:electron-main": "aegir test -t electron-main"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@libp2p/interface": "
|
|
55
|
-
"@libp2p/
|
|
56
|
-
"@
|
|
57
|
-
"@multiformats/
|
|
58
|
-
"@multiformats/multiaddr": "^12.1.5",
|
|
54
|
+
"@libp2p/interface": "0.1.6-05b52d69c",
|
|
55
|
+
"@libp2p/utils": "4.0.7-05b52d69c",
|
|
56
|
+
"@multiformats/mafmt": "^12.1.6",
|
|
57
|
+
"@multiformats/multiaddr": "^12.1.10",
|
|
59
58
|
"@types/sinon": "^17.0.0",
|
|
60
59
|
"stream-to-it": "^0.2.2"
|
|
61
60
|
},
|
|
62
61
|
"devDependencies": {
|
|
63
|
-
"@libp2p/interface-compliance-tests": "
|
|
62
|
+
"@libp2p/interface-compliance-tests": "4.1.5-05b52d69c",
|
|
63
|
+
"@libp2p/logger": "3.1.0-05b52d69c",
|
|
64
64
|
"aegir": "^41.0.2",
|
|
65
|
-
"it-all": "^3.0.
|
|
65
|
+
"it-all": "^3.0.3",
|
|
66
66
|
"it-pipe": "^3.0.1",
|
|
67
67
|
"p-defer": "^4.0.0",
|
|
68
68
|
"sinon": "^17.0.0",
|
|
69
|
-
"uint8arrays": "^4.0.
|
|
69
|
+
"uint8arrays": "^4.0.6"
|
|
70
70
|
}
|
|
71
71
|
}
|
package/src/index.ts
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* const listener = transport.createListener({
|
|
23
23
|
* upgrader,
|
|
24
24
|
* handler: (socket) => {
|
|
25
|
-
* console.log('new connection opened')
|
|
25
|
+
* console.this.log('new connection opened')
|
|
26
26
|
* pipe(
|
|
27
27
|
* ['hello', ' ', 'World!'],
|
|
28
28
|
* socket
|
|
@@ -32,14 +32,14 @@
|
|
|
32
32
|
*
|
|
33
33
|
* const addr = multiaddr('/ip4/127.0.0.1/tcp/9090')
|
|
34
34
|
* await listener.listen(addr)
|
|
35
|
-
* console.log('listening')
|
|
35
|
+
* console.this.log('listening')
|
|
36
36
|
*
|
|
37
37
|
* const socket = await transport.dial(addr, { upgrader })
|
|
38
38
|
* const values = await pipe(
|
|
39
39
|
* socket,
|
|
40
40
|
* all
|
|
41
41
|
* )
|
|
42
|
-
* console.log(`Value: ${values.toString()}`)
|
|
42
|
+
* console.this.log(`Value: ${values.toString()}`)
|
|
43
43
|
*
|
|
44
44
|
* // Close connection after reading
|
|
45
45
|
* await listener.close()
|
|
@@ -57,19 +57,17 @@
|
|
|
57
57
|
import net from 'net'
|
|
58
58
|
import { AbortError, CodeError } from '@libp2p/interface/errors'
|
|
59
59
|
import { type CreateListenerOptions, type DialOptions, symbol, type Transport, type Listener } from '@libp2p/interface/transport'
|
|
60
|
-
import { logger } from '@libp2p/logger'
|
|
61
60
|
import * as mafmt from '@multiformats/mafmt'
|
|
62
61
|
import { CODE_CIRCUIT, CODE_P2P, CODE_UNIX } from './constants.js'
|
|
63
62
|
import { type CloseServerOnMaxConnectionsOpts, TCPListener } from './listener.js'
|
|
64
63
|
import { toMultiaddrConnection } from './socket-to-conn.js'
|
|
65
64
|
import { multiaddrToNetConfig } from './utils.js'
|
|
65
|
+
import type { ComponentLogger, Logger } from '@libp2p/interface'
|
|
66
66
|
import type { Connection } from '@libp2p/interface/connection'
|
|
67
67
|
import type { CounterGroup, Metrics } from '@libp2p/interface/metrics'
|
|
68
68
|
import type { AbortOptions, Multiaddr } from '@multiformats/multiaddr'
|
|
69
69
|
import type { Socket, IpcSocketConnectOpts, TcpSocketConnectOpts } from 'net'
|
|
70
70
|
|
|
71
|
-
const log = logger('libp2p:tcp')
|
|
72
|
-
|
|
73
71
|
export interface TCPOptions {
|
|
74
72
|
/**
|
|
75
73
|
* An optional number in ms that is used as an inactivity timeout after which the socket will be closed
|
|
@@ -125,6 +123,7 @@ export interface TCPCreateListenerOptions extends CreateListenerOptions, TCPSock
|
|
|
125
123
|
|
|
126
124
|
export interface TCPComponents {
|
|
127
125
|
metrics?: Metrics
|
|
126
|
+
logger: ComponentLogger
|
|
128
127
|
}
|
|
129
128
|
|
|
130
129
|
export interface TCPMetrics {
|
|
@@ -135,8 +134,10 @@ class TCP implements Transport {
|
|
|
135
134
|
private readonly opts: TCPOptions
|
|
136
135
|
private readonly metrics?: TCPMetrics
|
|
137
136
|
private readonly components: TCPComponents
|
|
137
|
+
private readonly log: Logger
|
|
138
138
|
|
|
139
139
|
constructor (components: TCPComponents, options: TCPOptions = {}) {
|
|
140
|
+
this.log = components.logger.forComponent('libp2p:tcp')
|
|
140
141
|
this.opts = options
|
|
141
142
|
this.components = components
|
|
142
143
|
|
|
@@ -162,32 +163,33 @@ class TCP implements Transport {
|
|
|
162
163
|
|
|
163
164
|
// Avoid uncaught errors caused by unstable connections
|
|
164
165
|
socket.on('error', err => {
|
|
165
|
-
log('socket error', err)
|
|
166
|
+
this.log('socket error', err)
|
|
166
167
|
})
|
|
167
168
|
|
|
168
169
|
const maConn = toMultiaddrConnection(socket, {
|
|
169
170
|
remoteAddr: ma,
|
|
170
171
|
socketInactivityTimeout: this.opts.outboundSocketInactivityTimeout,
|
|
171
172
|
socketCloseTimeout: this.opts.socketCloseTimeout,
|
|
172
|
-
metrics: this.metrics?.dialerEvents
|
|
173
|
+
metrics: this.metrics?.dialerEvents,
|
|
174
|
+
logger: this.components.logger
|
|
173
175
|
})
|
|
174
176
|
|
|
175
177
|
const onAbort = (): void => {
|
|
176
178
|
maConn.close().catch(err => {
|
|
177
|
-
log.error('Error closing maConn after abort', err)
|
|
179
|
+
this.log.error('Error closing maConn after abort', err)
|
|
178
180
|
})
|
|
179
181
|
}
|
|
180
182
|
options.signal?.addEventListener('abort', onAbort, { once: true })
|
|
181
183
|
|
|
182
|
-
log('new outbound connection %s', maConn.remoteAddr)
|
|
184
|
+
this.log('new outbound connection %s', maConn.remoteAddr)
|
|
183
185
|
const conn = await options.upgrader.upgradeOutbound(maConn)
|
|
184
|
-
log('outbound connection %s upgraded', maConn.remoteAddr)
|
|
186
|
+
this.log('outbound connection %s upgraded', maConn.remoteAddr)
|
|
185
187
|
|
|
186
188
|
options.signal?.removeEventListener('abort', onAbort)
|
|
187
189
|
|
|
188
190
|
if (options.signal?.aborted === true) {
|
|
189
191
|
conn.close().catch(err => {
|
|
190
|
-
log.error('Error closing conn after abort', err)
|
|
192
|
+
this.log.error('Error closing conn after abort', err)
|
|
191
193
|
})
|
|
192
194
|
|
|
193
195
|
throw new AbortError()
|
|
@@ -206,7 +208,7 @@ class TCP implements Transport {
|
|
|
206
208
|
const cOpts = multiaddrToNetConfig(ma) as (IpcSocketConnectOpts & TcpSocketConnectOpts)
|
|
207
209
|
const cOptsStr = cOpts.path ?? `${cOpts.host ?? ''}:${cOpts.port}`
|
|
208
210
|
|
|
209
|
-
log('dialing %j', cOpts)
|
|
211
|
+
this.log('dialing %j', cOpts)
|
|
210
212
|
const rawSocket = net.connect(cOpts)
|
|
211
213
|
|
|
212
214
|
const onError = (err: Error): void => {
|
|
@@ -217,7 +219,7 @@ class TCP implements Transport {
|
|
|
217
219
|
}
|
|
218
220
|
|
|
219
221
|
const onTimeout = (): void => {
|
|
220
|
-
log('connection timeout %s', cOptsStr)
|
|
222
|
+
this.log('connection timeout %s', cOptsStr)
|
|
221
223
|
this.metrics?.dialerEvents.increment({ timeout: true })
|
|
222
224
|
|
|
223
225
|
const err = new CodeError(`connection timeout after ${Date.now() - start}ms`, 'ERR_CONNECT_TIMEOUT')
|
|
@@ -226,13 +228,13 @@ class TCP implements Transport {
|
|
|
226
228
|
}
|
|
227
229
|
|
|
228
230
|
const onConnect = (): void => {
|
|
229
|
-
log('connection opened %j', cOpts)
|
|
231
|
+
this.log('connection opened %j', cOpts)
|
|
230
232
|
this.metrics?.dialerEvents.increment({ connect: true })
|
|
231
233
|
done()
|
|
232
234
|
}
|
|
233
235
|
|
|
234
236
|
const onAbort = (): void => {
|
|
235
|
-
log('connection aborted %j', cOpts)
|
|
237
|
+
this.log('connection aborted %j', cOpts)
|
|
236
238
|
this.metrics?.dialerEvents.increment({ abort: true })
|
|
237
239
|
rawSocket.destroy()
|
|
238
240
|
done(new AbortError())
|
|
@@ -277,7 +279,8 @@ class TCP implements Transport {
|
|
|
277
279
|
closeServerOnMaxConnections: this.opts.closeServerOnMaxConnections,
|
|
278
280
|
socketInactivityTimeout: this.opts.inboundSocketInactivityTimeout,
|
|
279
281
|
socketCloseTimeout: this.opts.socketCloseTimeout,
|
|
280
|
-
metrics: this.components.metrics
|
|
282
|
+
metrics: this.components.metrics,
|
|
283
|
+
logger: this.components.logger
|
|
281
284
|
})
|
|
282
285
|
}
|
|
283
286
|
|
|
@@ -301,8 +304,8 @@ class TCP implements Transport {
|
|
|
301
304
|
}
|
|
302
305
|
}
|
|
303
306
|
|
|
304
|
-
export function tcp (init: TCPOptions = {}): (components
|
|
305
|
-
return (components: TCPComponents
|
|
307
|
+
export function tcp (init: TCPOptions = {}): (components: TCPComponents) => Transport {
|
|
308
|
+
return (components: TCPComponents) => {
|
|
306
309
|
return new TCP(components, init)
|
|
307
310
|
}
|
|
308
311
|
}
|
package/src/listener.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import net from 'net'
|
|
2
2
|
import { CodeError } from '@libp2p/interface/errors'
|
|
3
3
|
import { TypedEventEmitter, CustomEvent } from '@libp2p/interface/events'
|
|
4
|
-
import { logger } from '@libp2p/logger'
|
|
5
4
|
import { CODE_P2P } from './constants.js'
|
|
6
5
|
import { toMultiaddrConnection } from './socket-to-conn.js'
|
|
7
6
|
import {
|
|
@@ -10,21 +9,20 @@ import {
|
|
|
10
9
|
type NetConfig
|
|
11
10
|
} from './utils.js'
|
|
12
11
|
import type { TCPCreateListenerOptions } from './index.js'
|
|
12
|
+
import type { ComponentLogger, Logger, LoggerOptions } from '@libp2p/interface'
|
|
13
13
|
import type { MultiaddrConnection, Connection } from '@libp2p/interface/connection'
|
|
14
14
|
import type { CounterGroup, MetricGroup, Metrics } from '@libp2p/interface/metrics'
|
|
15
15
|
import type { Listener, ListenerEvents, Upgrader } from '@libp2p/interface/transport'
|
|
16
16
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
|
17
17
|
|
|
18
|
-
const log = logger('libp2p:tcp:listener')
|
|
19
|
-
|
|
20
18
|
/**
|
|
21
19
|
* Attempts to close the given maConn. If a failure occurs, it will be logged
|
|
22
20
|
*/
|
|
23
|
-
async function attemptClose (maConn: MultiaddrConnection): Promise<void> {
|
|
21
|
+
async function attemptClose (maConn: MultiaddrConnection, options: LoggerOptions): Promise<void> {
|
|
24
22
|
try {
|
|
25
23
|
await maConn.close()
|
|
26
24
|
} catch (err) {
|
|
27
|
-
log.error('an error occurred closing the connection', err)
|
|
25
|
+
options.log.error('an error occurred closing the connection', err)
|
|
28
26
|
}
|
|
29
27
|
}
|
|
30
28
|
|
|
@@ -45,6 +43,7 @@ interface Context extends TCPCreateListenerOptions {
|
|
|
45
43
|
backlog?: number
|
|
46
44
|
metrics?: Metrics
|
|
47
45
|
closeServerOnMaxConnections?: CloseServerOnMaxConnectionsOpts
|
|
46
|
+
logger: ComponentLogger
|
|
48
47
|
}
|
|
49
48
|
|
|
50
49
|
export interface TCPListenerMetrics {
|
|
@@ -78,12 +77,14 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
|
|
|
78
77
|
private status: Status = { code: TCPListenerStatusCode.INACTIVE }
|
|
79
78
|
private metrics?: TCPListenerMetrics
|
|
80
79
|
private addr: string
|
|
80
|
+
private readonly log: Logger
|
|
81
81
|
|
|
82
82
|
constructor (private readonly context: Context) {
|
|
83
83
|
super()
|
|
84
84
|
|
|
85
85
|
context.keepAlive = context.keepAlive ?? true
|
|
86
86
|
|
|
87
|
+
this.log = context.logger.forComponent('libp2p:tcp:listener')
|
|
87
88
|
this.addr = 'unknown'
|
|
88
89
|
this.server = net.createServer(context, this.onSocket.bind(this))
|
|
89
90
|
|
|
@@ -172,7 +173,7 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
|
|
|
172
173
|
}
|
|
173
174
|
// Avoid uncaught errors caused by unstable connections
|
|
174
175
|
socket.on('error', err => {
|
|
175
|
-
log('socket error', err)
|
|
176
|
+
this.log('socket error', err)
|
|
176
177
|
this.metrics?.events.increment({ [`${this.addr} error`]: true })
|
|
177
178
|
})
|
|
178
179
|
|
|
@@ -183,19 +184,20 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
|
|
|
183
184
|
socketInactivityTimeout: this.context.socketInactivityTimeout,
|
|
184
185
|
socketCloseTimeout: this.context.socketCloseTimeout,
|
|
185
186
|
metrics: this.metrics?.events,
|
|
186
|
-
metricPrefix: `${this.addr}
|
|
187
|
+
metricPrefix: `${this.addr} `,
|
|
188
|
+
logger: this.context.logger
|
|
187
189
|
})
|
|
188
190
|
} catch (err) {
|
|
189
|
-
log.error('inbound connection failed', err)
|
|
191
|
+
this.log.error('inbound connection failed', err)
|
|
190
192
|
this.metrics?.errors.increment({ [`${this.addr} inbound_to_connection`]: true })
|
|
191
193
|
return
|
|
192
194
|
}
|
|
193
195
|
|
|
194
|
-
log('new inbound connection %s', maConn.remoteAddr)
|
|
196
|
+
this.log('new inbound connection %s', maConn.remoteAddr)
|
|
195
197
|
try {
|
|
196
198
|
this.context.upgrader.upgradeInbound(maConn)
|
|
197
199
|
.then((conn) => {
|
|
198
|
-
log('inbound connection upgraded %s', maConn.remoteAddr)
|
|
200
|
+
this.log('inbound connection upgraded %s', maConn.remoteAddr)
|
|
199
201
|
this.connections.add(maConn)
|
|
200
202
|
|
|
201
203
|
socket.once('close', () => {
|
|
@@ -210,7 +212,7 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
|
|
|
210
212
|
// we can do. resume() will be called again every time a connection is dropped, which
|
|
211
213
|
// acts as an eventual retry mechanism. onListenError allows the consumer act on this.
|
|
212
214
|
this.resume().catch(e => {
|
|
213
|
-
log.error('error attempting to listen server once connection count under limit', e)
|
|
215
|
+
this.log.error('error attempting to listen server once connection count under limit', e)
|
|
214
216
|
this.context.closeServerOnMaxConnections?.onListenError?.(e as Error)
|
|
215
217
|
})
|
|
216
218
|
}
|
|
@@ -225,27 +227,31 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
|
|
|
225
227
|
this.connections.size >= this.context.closeServerOnMaxConnections.closeAbove
|
|
226
228
|
) {
|
|
227
229
|
this.pause(false).catch(e => {
|
|
228
|
-
log.error('error attempting to close server once connection count over limit', e)
|
|
230
|
+
this.log.error('error attempting to close server once connection count over limit', e)
|
|
229
231
|
})
|
|
230
232
|
}
|
|
231
233
|
|
|
232
234
|
this.dispatchEvent(new CustomEvent<Connection>('connection', { detail: conn }))
|
|
233
235
|
})
|
|
234
236
|
.catch(async err => {
|
|
235
|
-
log.error('inbound connection failed', err)
|
|
237
|
+
this.log.error('inbound connection failed', err)
|
|
236
238
|
this.metrics?.errors.increment({ [`${this.addr} inbound_upgrade`]: true })
|
|
237
239
|
|
|
238
|
-
await attemptClose(maConn
|
|
240
|
+
await attemptClose(maConn, {
|
|
241
|
+
log: this.log
|
|
242
|
+
})
|
|
239
243
|
})
|
|
240
244
|
.catch(err => {
|
|
241
|
-
log.error('closing inbound connection failed', err)
|
|
245
|
+
this.log.error('closing inbound connection failed', err)
|
|
242
246
|
})
|
|
243
247
|
} catch (err) {
|
|
244
|
-
log.error('inbound connection failed', err)
|
|
248
|
+
this.log.error('inbound connection failed', err)
|
|
245
249
|
|
|
246
|
-
attemptClose(maConn
|
|
250
|
+
attemptClose(maConn, {
|
|
251
|
+
log: this.log
|
|
252
|
+
})
|
|
247
253
|
.catch(err => {
|
|
248
|
-
log.error('closing inbound connection failed', err)
|
|
254
|
+
this.log.error('closing inbound connection failed', err)
|
|
249
255
|
this.metrics?.errors.increment({ [`${this.addr} inbound_closing_failed`]: true })
|
|
250
256
|
})
|
|
251
257
|
}
|
|
@@ -276,7 +282,7 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
|
|
|
276
282
|
addrs = addrs.concat(getMultiaddrs('ip6', address.address, address.port))
|
|
277
283
|
}
|
|
278
284
|
} catch (err) {
|
|
279
|
-
log.error('could not turn %s:%s into multiaddr', address.address, address.port, err)
|
|
285
|
+
this.log.error('could not turn %s:%s into multiaddr', address.address, address.port, err)
|
|
280
286
|
}
|
|
281
287
|
}
|
|
282
288
|
|
|
@@ -310,9 +316,11 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
|
|
|
310
316
|
async close (): Promise<void> {
|
|
311
317
|
// Close connections and server the same time to avoid any race condition
|
|
312
318
|
await Promise.all([
|
|
313
|
-
Promise.all(Array.from(this.connections.values()).map(async maConn => attemptClose(maConn
|
|
319
|
+
Promise.all(Array.from(this.connections.values()).map(async maConn => attemptClose(maConn, {
|
|
320
|
+
log: this.log
|
|
321
|
+
}))),
|
|
314
322
|
this.pause(true).catch(e => {
|
|
315
|
-
log.error('error attempting to close server once connection count over limit', e)
|
|
323
|
+
this.log.error('error attempting to close server once connection count over limit', e)
|
|
316
324
|
})
|
|
317
325
|
])
|
|
318
326
|
}
|
|
@@ -334,7 +342,7 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
|
|
|
334
342
|
})
|
|
335
343
|
|
|
336
344
|
this.status = { ...this.status, code: TCPListenerStatusCode.ACTIVE }
|
|
337
|
-
log('Listening on %s', this.server.address())
|
|
345
|
+
this.log('Listening on %s', this.server.address())
|
|
338
346
|
}
|
|
339
347
|
|
|
340
348
|
private async pause (permanent: boolean): Promise<void> {
|
|
@@ -347,7 +355,7 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
|
|
|
347
355
|
return
|
|
348
356
|
}
|
|
349
357
|
|
|
350
|
-
log('Closing server on %s', this.server.address())
|
|
358
|
+
this.log('Closing server on %s', this.server.address())
|
|
351
359
|
|
|
352
360
|
// NodeJS implementation tracks listening status with `this._handle` property.
|
|
353
361
|
// - Server.close() sets this._handle to null immediately. If this._handle is null, ERR_SERVER_NOT_RUNNING is thrown
|