@libp2p/tcp 8.0.12 → 8.0.13-0b4a2ee79
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/README.md +1 -1
- package/dist/index.min.js +1 -5
- package/dist/src/index.d.ts +26 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +26 -19
- 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 +30 -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 +10 -4
- package/dist/src/socket-to-conn.js.map +1 -1
- package/dist/src/utils.js +1 -1
- package/dist/src/utils.js.map +1 -1
- package/package.json +10 -10
- package/src/index.ts +54 -21
- package/src/listener.ts +32 -23
- package/src/socket-to-conn.ts +14 -5
- package/src/utils.ts +1 -1
- 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,13 @@ 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
|
+
context.noDelay = context.noDelay ?? true;
|
|
43
|
+
this.log = context.logger.forComponent('libp2p:tcp:listener');
|
|
43
44
|
this.addr = 'unknown';
|
|
44
45
|
this.server = net.createServer(context, this.onSocket.bind(this));
|
|
45
46
|
// https://nodejs.org/api/net.html#servermaxconnections
|
|
@@ -120,7 +121,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
120
121
|
}
|
|
121
122
|
// Avoid uncaught errors caused by unstable connections
|
|
122
123
|
socket.on('error', err => {
|
|
123
|
-
log('socket error', err);
|
|
124
|
+
this.log('socket error', err);
|
|
124
125
|
this.metrics?.events.increment({ [`${this.addr} error`]: true });
|
|
125
126
|
});
|
|
126
127
|
let maConn;
|
|
@@ -130,19 +131,20 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
130
131
|
socketInactivityTimeout: this.context.socketInactivityTimeout,
|
|
131
132
|
socketCloseTimeout: this.context.socketCloseTimeout,
|
|
132
133
|
metrics: this.metrics?.events,
|
|
133
|
-
metricPrefix: `${this.addr}
|
|
134
|
+
metricPrefix: `${this.addr} `,
|
|
135
|
+
logger: this.context.logger
|
|
134
136
|
});
|
|
135
137
|
}
|
|
136
138
|
catch (err) {
|
|
137
|
-
log.error('inbound connection failed', err);
|
|
139
|
+
this.log.error('inbound connection failed', err);
|
|
138
140
|
this.metrics?.errors.increment({ [`${this.addr} inbound_to_connection`]: true });
|
|
139
141
|
return;
|
|
140
142
|
}
|
|
141
|
-
log('new inbound connection %s', maConn.remoteAddr);
|
|
143
|
+
this.log('new inbound connection %s', maConn.remoteAddr);
|
|
142
144
|
try {
|
|
143
145
|
this.context.upgrader.upgradeInbound(maConn)
|
|
144
146
|
.then((conn) => {
|
|
145
|
-
log('inbound connection upgraded %s', maConn.remoteAddr);
|
|
147
|
+
this.log('inbound connection upgraded %s', maConn.remoteAddr);
|
|
146
148
|
this.connections.add(maConn);
|
|
147
149
|
socket.once('close', () => {
|
|
148
150
|
this.connections.delete(maConn);
|
|
@@ -153,7 +155,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
153
155
|
// we can do. resume() will be called again every time a connection is dropped, which
|
|
154
156
|
// acts as an eventual retry mechanism. onListenError allows the consumer act on this.
|
|
155
157
|
this.resume().catch(e => {
|
|
156
|
-
log.error('error attempting to listen server once connection count under limit', e);
|
|
158
|
+
this.log.error('error attempting to listen server once connection count under limit', e);
|
|
157
159
|
this.context.closeServerOnMaxConnections?.onListenError?.(e);
|
|
158
160
|
});
|
|
159
161
|
}
|
|
@@ -164,25 +166,29 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
164
166
|
if (this.context.closeServerOnMaxConnections != null &&
|
|
165
167
|
this.connections.size >= this.context.closeServerOnMaxConnections.closeAbove) {
|
|
166
168
|
this.pause(false).catch(e => {
|
|
167
|
-
log.error('error attempting to close server once connection count over limit', e);
|
|
169
|
+
this.log.error('error attempting to close server once connection count over limit', e);
|
|
168
170
|
});
|
|
169
171
|
}
|
|
170
172
|
this.dispatchEvent(new CustomEvent('connection', { detail: conn }));
|
|
171
173
|
})
|
|
172
174
|
.catch(async (err) => {
|
|
173
|
-
log.error('inbound connection failed', err);
|
|
175
|
+
this.log.error('inbound connection failed', err);
|
|
174
176
|
this.metrics?.errors.increment({ [`${this.addr} inbound_upgrade`]: true });
|
|
175
|
-
await attemptClose(maConn
|
|
177
|
+
await attemptClose(maConn, {
|
|
178
|
+
log: this.log
|
|
179
|
+
});
|
|
176
180
|
})
|
|
177
181
|
.catch(err => {
|
|
178
|
-
log.error('closing inbound connection failed', err);
|
|
182
|
+
this.log.error('closing inbound connection failed', err);
|
|
179
183
|
});
|
|
180
184
|
}
|
|
181
185
|
catch (err) {
|
|
182
|
-
log.error('inbound connection failed', err);
|
|
183
|
-
attemptClose(maConn
|
|
186
|
+
this.log.error('inbound connection failed', err);
|
|
187
|
+
attemptClose(maConn, {
|
|
188
|
+
log: this.log
|
|
189
|
+
})
|
|
184
190
|
.catch(err => {
|
|
185
|
-
log.error('closing inbound connection failed', err);
|
|
191
|
+
this.log.error('closing inbound connection failed', err);
|
|
186
192
|
this.metrics?.errors.increment({ [`${this.addr} inbound_closing_failed`]: true });
|
|
187
193
|
});
|
|
188
194
|
}
|
|
@@ -212,7 +218,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
212
218
|
}
|
|
213
219
|
}
|
|
214
220
|
catch (err) {
|
|
215
|
-
log.error('could not turn %s:%s into multiaddr', address.address, address.port, err);
|
|
221
|
+
this.log.error('could not turn %s:%s into multiaddr', address.address, address.port, err);
|
|
216
222
|
}
|
|
217
223
|
}
|
|
218
224
|
return addrs.map(ma => peerId != null ? ma.encapsulate(`/p2p/${peerId}`) : ma);
|
|
@@ -241,9 +247,11 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
241
247
|
async close() {
|
|
242
248
|
// Close connections and server the same time to avoid any race condition
|
|
243
249
|
await Promise.all([
|
|
244
|
-
Promise.all(Array.from(this.connections.values()).map(async (maConn) => attemptClose(maConn
|
|
250
|
+
Promise.all(Array.from(this.connections.values()).map(async (maConn) => attemptClose(maConn, {
|
|
251
|
+
log: this.log
|
|
252
|
+
}))),
|
|
245
253
|
this.pause(true).catch(e => {
|
|
246
|
-
log.error('error attempting to close server once connection count over limit', e);
|
|
254
|
+
this.log.error('error attempting to close server once connection count over limit', e);
|
|
247
255
|
})
|
|
248
256
|
]);
|
|
249
257
|
}
|
|
@@ -261,7 +269,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
261
269
|
this.server.listen(netConfig, resolve);
|
|
262
270
|
});
|
|
263
271
|
this.status = { ...this.status, code: TCPListenerStatusCode.ACTIVE };
|
|
264
|
-
log('Listening on %s', this.server.address());
|
|
272
|
+
this.log('Listening on %s', this.server.address());
|
|
265
273
|
}
|
|
266
274
|
async pause(permanent) {
|
|
267
275
|
if (!this.server.listening && this.status.code === TCPListenerStatusCode.PAUSED && permanent) {
|
|
@@ -271,7 +279,7 @@ export class TCPListener extends TypedEventEmitter {
|
|
|
271
279
|
if (!this.server.listening || this.status.code !== TCPListenerStatusCode.ACTIVE) {
|
|
272
280
|
return;
|
|
273
281
|
}
|
|
274
|
-
log('Closing server on %s', this.server.address());
|
|
282
|
+
this.log('Closing server on %s', this.server.address());
|
|
275
283
|
// NodeJS implementation tracks listening status with `this._handle` property.
|
|
276
284
|
// - Server.close() sets this._handle to null immediately. If this._handle is null, ERR_SERVER_NOT_RUNNING is thrown
|
|
277
285
|
// - 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,mBAmKpF,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) => {
|
|
@@ -135,7 +140,8 @@ export const toMultiaddrConnection = (socket, options) => {
|
|
|
135
140
|
abort: (err) => {
|
|
136
141
|
log('%s socket abort due to error', lOptsStr, err);
|
|
137
142
|
socket.destroy(err);
|
|
138
|
-
}
|
|
143
|
+
},
|
|
144
|
+
log
|
|
139
145
|
};
|
|
140
146
|
return maConn;
|
|
141
147
|
};
|
|
@@ -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/dist/src/utils.js
CHANGED
|
@@ -15,7 +15,7 @@ export function multiaddrToNetConfig(addr, config = {}) {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
// tcp listening
|
|
18
|
-
return { ...addr.toOptions()
|
|
18
|
+
return { ...config, ...addr.toOptions() };
|
|
19
19
|
}
|
|
20
20
|
export function getMultiaddrs(proto, ip, port) {
|
|
21
21
|
const toMa = (ip) => multiaddr(`/${proto}/${ip}/tcp/${port}`);
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAInD,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;AAIhD,MAAM,UAAU,oBAAoB,CAAE,IAAe,EAAE,SAAoB,EAAE;IAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;IAEjC,wBAAwB;IACxB,IAAI,UAAU,IAAI,IAAI,EAAE;QACtB,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE;YAC7B,sCAAsC;YACtC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAA;SACxD;aAAM;YACL,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;SAC5B;KACF;IAED,gBAAgB;IAChB,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAInD,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAA;AAIhD,MAAM,UAAU,oBAAoB,CAAE,IAAe,EAAE,SAAoB,EAAE;IAC3E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;IAEjC,wBAAwB;IACxB,IAAI,UAAU,IAAI,IAAI,EAAE;QACtB,IAAI,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,EAAE;YAC7B,sCAAsC;YACtC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAA;SACxD;aAAM;YACL,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;SAC5B;KACF;IAED,gBAAgB;IAChB,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,aAAa,CAAE,KAAoB,EAAE,EAAU,EAAE,IAAY;IAC3E,MAAM,IAAI,GAAG,CAAC,EAAU,EAAa,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAA;IAChF,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAC/E,CAAC;AAED,MAAM,UAAU,SAAS,CAAE,EAAU;IACnC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,QAAQ,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAA;AAEvC,SAAS,eAAe,CAAE,MAAc;IACtC,MAAM,SAAS,GAAa,EAAE,CAAA;IAE9B,KAAK,MAAM,CAAC,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QACnD,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;gBAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC7B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;iBAChC;aACF;SACF;KACF;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/tcp",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.13-0b4a2ee79",
|
|
4
4
|
"description": "A TCP transport for libp2p",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
|
-
"homepage": "https://github.com/libp2p/js-libp2p/tree/
|
|
6
|
+
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-tcp#readme",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "git+https://github.com/libp2p/js-libp2p.git"
|
|
@@ -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-0b4a2ee79",
|
|
55
|
+
"@libp2p/utils": "4.0.7-0b4a2ee79",
|
|
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-0b4a2ee79",
|
|
63
|
+
"@libp2p/logger": "3.1.0-0b4a2ee79",
|
|
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
|
|
@@ -103,15 +101,40 @@ export interface TCPOptions {
|
|
|
103
101
|
* Open server (start listening for new connections) if connections fall below a limit.
|
|
104
102
|
*/
|
|
105
103
|
closeServerOnMaxConnections?: CloseServerOnMaxConnectionsOpts
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Options passed to `net.connect` for every opened TCP socket
|
|
107
|
+
*/
|
|
108
|
+
dialOpts?: TCPSocketOptions
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Options passed to every `net.createServer` for every TCP server
|
|
112
|
+
*/
|
|
113
|
+
listenOpts?: TCPSocketOptions
|
|
106
114
|
}
|
|
107
115
|
|
|
108
116
|
/**
|
|
109
117
|
* Expose a subset of net.connect options
|
|
110
118
|
*/
|
|
111
119
|
export interface TCPSocketOptions extends AbortOptions {
|
|
120
|
+
/**
|
|
121
|
+
* @see https://nodejs.org/api/net.html#socketconnectoptions-connectlistener
|
|
122
|
+
*/
|
|
112
123
|
noDelay?: boolean
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* @see https://nodejs.org/api/net.html#socketconnectoptions-connectlistener
|
|
127
|
+
*/
|
|
113
128
|
keepAlive?: boolean
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* @see https://nodejs.org/api/net.html#socketconnectoptions-connectlistener
|
|
132
|
+
*/
|
|
114
133
|
keepAliveInitialDelay?: number
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* @see https://nodejs.org/api/net.html#new-netsocketoptions
|
|
137
|
+
*/
|
|
115
138
|
allowHalfOpen?: boolean
|
|
116
139
|
}
|
|
117
140
|
|
|
@@ -125,6 +148,7 @@ export interface TCPCreateListenerOptions extends CreateListenerOptions, TCPSock
|
|
|
125
148
|
|
|
126
149
|
export interface TCPComponents {
|
|
127
150
|
metrics?: Metrics
|
|
151
|
+
logger: ComponentLogger
|
|
128
152
|
}
|
|
129
153
|
|
|
130
154
|
export interface TCPMetrics {
|
|
@@ -135,8 +159,10 @@ class TCP implements Transport {
|
|
|
135
159
|
private readonly opts: TCPOptions
|
|
136
160
|
private readonly metrics?: TCPMetrics
|
|
137
161
|
private readonly components: TCPComponents
|
|
162
|
+
private readonly log: Logger
|
|
138
163
|
|
|
139
164
|
constructor (components: TCPComponents, options: TCPOptions = {}) {
|
|
165
|
+
this.log = components.logger.forComponent('libp2p:tcp')
|
|
140
166
|
this.opts = options
|
|
141
167
|
this.components = components
|
|
142
168
|
|
|
@@ -156,38 +182,40 @@ class TCP implements Transport {
|
|
|
156
182
|
|
|
157
183
|
async dial (ma: Multiaddr, options: TCPDialOptions): Promise<Connection> {
|
|
158
184
|
options.keepAlive = options.keepAlive ?? true
|
|
185
|
+
options.noDelay = options.noDelay ?? true
|
|
159
186
|
|
|
160
187
|
// options.signal destroys the socket before 'connect' event
|
|
161
188
|
const socket = await this._connect(ma, options)
|
|
162
189
|
|
|
163
190
|
// Avoid uncaught errors caused by unstable connections
|
|
164
191
|
socket.on('error', err => {
|
|
165
|
-
log('socket error', err)
|
|
192
|
+
this.log('socket error', err)
|
|
166
193
|
})
|
|
167
194
|
|
|
168
195
|
const maConn = toMultiaddrConnection(socket, {
|
|
169
196
|
remoteAddr: ma,
|
|
170
197
|
socketInactivityTimeout: this.opts.outboundSocketInactivityTimeout,
|
|
171
198
|
socketCloseTimeout: this.opts.socketCloseTimeout,
|
|
172
|
-
metrics: this.metrics?.dialerEvents
|
|
199
|
+
metrics: this.metrics?.dialerEvents,
|
|
200
|
+
logger: this.components.logger
|
|
173
201
|
})
|
|
174
202
|
|
|
175
203
|
const onAbort = (): void => {
|
|
176
204
|
maConn.close().catch(err => {
|
|
177
|
-
log.error('Error closing maConn after abort', err)
|
|
205
|
+
this.log.error('Error closing maConn after abort', err)
|
|
178
206
|
})
|
|
179
207
|
}
|
|
180
208
|
options.signal?.addEventListener('abort', onAbort, { once: true })
|
|
181
209
|
|
|
182
|
-
log('new outbound connection %s', maConn.remoteAddr)
|
|
210
|
+
this.log('new outbound connection %s', maConn.remoteAddr)
|
|
183
211
|
const conn = await options.upgrader.upgradeOutbound(maConn)
|
|
184
|
-
log('outbound connection %s upgraded', maConn.remoteAddr)
|
|
212
|
+
this.log('outbound connection %s upgraded', maConn.remoteAddr)
|
|
185
213
|
|
|
186
214
|
options.signal?.removeEventListener('abort', onAbort)
|
|
187
215
|
|
|
188
216
|
if (options.signal?.aborted === true) {
|
|
189
217
|
conn.close().catch(err => {
|
|
190
|
-
log.error('Error closing conn after abort', err)
|
|
218
|
+
this.log.error('Error closing conn after abort', err)
|
|
191
219
|
})
|
|
192
220
|
|
|
193
221
|
throw new AbortError()
|
|
@@ -203,13 +231,16 @@ class TCP implements Transport {
|
|
|
203
231
|
|
|
204
232
|
return new Promise<Socket>((resolve, reject) => {
|
|
205
233
|
const start = Date.now()
|
|
206
|
-
const cOpts = multiaddrToNetConfig(ma
|
|
207
|
-
|
|
234
|
+
const cOpts = multiaddrToNetConfig(ma, {
|
|
235
|
+
...(this.opts.dialOpts ?? {}),
|
|
236
|
+
...options
|
|
237
|
+
}) as (IpcSocketConnectOpts & TcpSocketConnectOpts)
|
|
208
238
|
|
|
209
|
-
log('dialing %
|
|
239
|
+
this.log('dialing %a', ma)
|
|
210
240
|
const rawSocket = net.connect(cOpts)
|
|
211
241
|
|
|
212
242
|
const onError = (err: Error): void => {
|
|
243
|
+
const cOptsStr = cOpts.path ?? `${cOpts.host ?? ''}:${cOpts.port}`
|
|
213
244
|
err.message = `connection error ${cOptsStr}: ${err.message}`
|
|
214
245
|
this.metrics?.dialerEvents.increment({ error: true })
|
|
215
246
|
|
|
@@ -217,7 +248,7 @@ class TCP implements Transport {
|
|
|
217
248
|
}
|
|
218
249
|
|
|
219
250
|
const onTimeout = (): void => {
|
|
220
|
-
log('connection timeout %
|
|
251
|
+
this.log('connection timeout %a', ma)
|
|
221
252
|
this.metrics?.dialerEvents.increment({ timeout: true })
|
|
222
253
|
|
|
223
254
|
const err = new CodeError(`connection timeout after ${Date.now() - start}ms`, 'ERR_CONNECT_TIMEOUT')
|
|
@@ -226,13 +257,13 @@ class TCP implements Transport {
|
|
|
226
257
|
}
|
|
227
258
|
|
|
228
259
|
const onConnect = (): void => {
|
|
229
|
-
log('connection opened %
|
|
260
|
+
this.log('connection opened %a', ma)
|
|
230
261
|
this.metrics?.dialerEvents.increment({ connect: true })
|
|
231
262
|
done()
|
|
232
263
|
}
|
|
233
264
|
|
|
234
265
|
const onAbort = (): void => {
|
|
235
|
-
log('connection aborted %
|
|
266
|
+
this.log('connection aborted %a', ma)
|
|
236
267
|
this.metrics?.dialerEvents.increment({ abort: true })
|
|
237
268
|
rawSocket.destroy()
|
|
238
269
|
done(new AbortError())
|
|
@@ -271,13 +302,15 @@ class TCP implements Transport {
|
|
|
271
302
|
*/
|
|
272
303
|
createListener (options: TCPCreateListenerOptions): Listener {
|
|
273
304
|
return new TCPListener({
|
|
305
|
+
...(this.opts.listenOpts ?? {}),
|
|
274
306
|
...options,
|
|
275
307
|
maxConnections: this.opts.maxConnections,
|
|
276
308
|
backlog: this.opts.backlog,
|
|
277
309
|
closeServerOnMaxConnections: this.opts.closeServerOnMaxConnections,
|
|
278
310
|
socketInactivityTimeout: this.opts.inboundSocketInactivityTimeout,
|
|
279
311
|
socketCloseTimeout: this.opts.socketCloseTimeout,
|
|
280
|
-
metrics: this.components.metrics
|
|
312
|
+
metrics: this.components.metrics,
|
|
313
|
+
logger: this.components.logger
|
|
281
314
|
})
|
|
282
315
|
}
|
|
283
316
|
|
|
@@ -301,8 +334,8 @@ class TCP implements Transport {
|
|
|
301
334
|
}
|
|
302
335
|
}
|
|
303
336
|
|
|
304
|
-
export function tcp (init: TCPOptions = {}): (components
|
|
305
|
-
return (components: TCPComponents
|
|
337
|
+
export function tcp (init: TCPOptions = {}): (components: TCPComponents) => Transport {
|
|
338
|
+
return (components: TCPComponents) => {
|
|
306
339
|
return new TCP(components, init)
|
|
307
340
|
}
|
|
308
341
|
}
|