@libp2p/tcp 10.0.6-24fa1d5af → 10.0.6-d9c7e0f7e

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.
@@ -1,7 +1,5 @@
1
- import { InvalidParametersError, TimeoutError } from '@libp2p/interface';
1
+ import { AbortError, InvalidParametersError, TimeoutError } from '@libp2p/interface';
2
2
  import { ipPortToMultiaddr as toMultiaddr } from '@libp2p/utils/ip-port-to-multiaddr';
3
- import pDefer from 'p-defer';
4
- import { raceEvent } from 'race-event';
5
3
  import { duplex } from 'stream-to-it';
6
4
  import { CLOSE_TIMEOUT, SOCKET_TIMEOUT } from './constants.js';
7
5
  import { multiaddrToNetConfig } from './utils.js';
@@ -10,15 +8,12 @@ import { multiaddrToNetConfig } from './utils.js';
10
8
  * https://github.com/libp2p/interface-transport#multiaddrconnection
11
9
  */
12
10
  export const toMultiaddrConnection = (socket, options) => {
13
- let closePromise;
11
+ let closePromise = null;
14
12
  const log = options.logger.forComponent('libp2p:tcp:socket');
15
- const direction = options.direction;
16
13
  const metrics = options.metrics;
17
14
  const metricPrefix = options.metricPrefix ?? '';
18
15
  const inactivityTimeout = options.socketInactivityTimeout ?? SOCKET_TIMEOUT;
19
16
  const closeTimeout = options.socketCloseTimeout ?? CLOSE_TIMEOUT;
20
- let timedout = false;
21
- let errored = false;
22
17
  // Check if we are connected on a unix path
23
18
  if (options.listeningAddr?.getPath() != null) {
24
19
  options.remoteAddr = options.listeningAddr;
@@ -26,16 +21,6 @@ export const toMultiaddrConnection = (socket, options) => {
26
21
  if (options.remoteAddr?.getPath() != null) {
27
22
  options.localAddr = options.remoteAddr;
28
23
  }
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
24
  let remoteAddr;
40
25
  if (options.remoteAddr != null) {
41
26
  remoteAddr = options.remoteAddr;
@@ -53,32 +38,32 @@ export const toMultiaddrConnection = (socket, options) => {
53
38
  const { sink, source } = duplex(socket);
54
39
  // by default there is no timeout
55
40
  // 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);
41
+ socket.setTimeout(inactivityTimeout, () => {
42
+ log('%s socket read timeout', lOptsStr);
60
43
  metrics?.increment({ [`${metricPrefix}timeout`]: true });
44
+ // only destroy with an error if the remote has not sent the FIN message
45
+ let err;
46
+ if (socket.readable) {
47
+ err = new TimeoutError('Socket read timeout');
48
+ }
61
49
  // if the socket times out due to inactivity we must manually close the connection
62
50
  // https://nodejs.org/dist/latest-v16.x/docs/api/net.html#event-timeout
63
- socket.destroy(new TimeoutError());
64
- maConn.timeline.close = Date.now();
51
+ socket.destroy(err);
65
52
  });
66
53
  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
- }
54
+ log('%s socket close', lOptsStr);
55
+ metrics?.increment({ [`${metricPrefix}close`]: true });
72
56
  // In instances where `close` was not explicitly called,
73
57
  // such as an iterable stream ending, ensure we have set the close
74
58
  // timeline
75
- socket.destroy();
76
- maConn.timeline.close = Date.now();
59
+ if (maConn.timeline.close == null) {
60
+ maConn.timeline.close = Date.now();
61
+ }
77
62
  });
78
63
  socket.once('end', () => {
79
64
  // the remote sent a FIN packet which means no more data will be sent
80
65
  // https://nodejs.org/dist/latest-v16.x/docs/api/net.html#event-end
81
- log('%s %s socket end', direction, lOptsStr);
66
+ log('%s socket end', lOptsStr);
82
67
  metrics?.increment({ [`${metricPrefix}end`]: true });
83
68
  });
84
69
  const maConn = {
@@ -101,7 +86,7 @@ export const toMultiaddrConnection = (socket, options) => {
101
86
  // If the source errored the socket will already have been destroyed by
102
87
  // duplex(). If the socket errored it will already be
103
88
  // destroyed. There's nothing to do here except log the error & return.
104
- log.error('%s %s error in sink - %e', direction, lOptsStr, err);
89
+ log.error('%s error in sink', lOptsStr, err);
105
90
  }
106
91
  }
107
92
  // we have finished writing, send the FIN message
@@ -113,71 +98,86 @@ export const toMultiaddrConnection = (socket, options) => {
113
98
  timeline: { open: Date.now() },
114
99
  async close(options = {}) {
115
100
  if (socket.closed) {
116
- log('the %s %s socket is already closed', direction, lOptsStr);
101
+ log('The %s socket is already closed', lOptsStr);
117
102
  return;
118
103
  }
119
104
  if (socket.destroyed) {
120
- log('the %s %s socket is already destroyed', direction, lOptsStr);
105
+ log('The %s socket is already destroyed', lOptsStr);
121
106
  return;
122
107
  }
123
- if (closePromise != null) {
124
- return closePromise.promise;
125
- }
108
+ const abortSignalListener = () => {
109
+ socket.destroy(new AbortError('Destroying socket after timeout'));
110
+ };
126
111
  try {
127
- closePromise = pDefer();
128
- // close writable end of socket
129
- socket.end();
130
- // convert EventEmitter to EventTarget
131
- const eventTarget = socketToEventTarget(socket);
132
- // don't wait forever to close
133
- const signal = options.signal ?? AbortSignal.timeout(closeTimeout);
134
- // wait for any unsent data to be sent
135
- if (socket.writableLength > 0) {
136
- log('%s %s draining socket', direction, lOptsStr);
137
- await raceEvent(eventTarget, 'drain', signal, {
138
- errorEvent: 'error'
139
- });
140
- log('%s %s socket drained', direction, lOptsStr);
112
+ if (closePromise != null) {
113
+ log('The %s socket is already closing', lOptsStr);
114
+ await closePromise;
115
+ return;
141
116
  }
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
- ]);
117
+ if (options.signal == null) {
118
+ const signal = AbortSignal.timeout(closeTimeout);
119
+ options = {
120
+ ...options,
121
+ signal
122
+ };
123
+ }
124
+ options.signal?.addEventListener('abort', abortSignalListener);
125
+ log('%s closing socket', lOptsStr);
126
+ closePromise = new Promise((resolve, reject) => {
127
+ socket.once('close', () => {
128
+ // socket completely closed
129
+ log('%s socket closed', lOptsStr);
130
+ resolve();
131
+ });
132
+ socket.once('error', (err) => {
133
+ log('%s socket error', lOptsStr, err);
134
+ if (!socket.destroyed) {
135
+ reject(err);
136
+ }
137
+ // if socket is destroyed, 'closed' event will be emitted later to resolve the promise
138
+ });
139
+ // shorten inactivity timeout
140
+ socket.setTimeout(closeTimeout);
141
+ // close writable end of the socket
142
+ socket.end();
143
+ if (socket.writableLength > 0) {
144
+ // there are outgoing bytes waiting to be sent
145
+ socket.once('drain', () => {
146
+ log('%s socket drained', lOptsStr);
147
+ // all bytes have been sent we can destroy the socket (maybe) before the timeout
148
+ socket.destroy();
149
+ });
150
+ }
151
+ else {
152
+ // nothing to send, destroy immediately, no need for the timeout
153
+ socket.destroy();
154
+ }
155
+ });
156
+ await closePromise;
149
157
  }
150
158
  catch (err) {
151
159
  this.abort(err);
152
160
  }
153
161
  finally {
154
- closePromise.resolve();
162
+ options.signal?.removeEventListener('abort', abortSignalListener);
155
163
  }
156
164
  },
157
165
  abort: (err) => {
158
- log('%s %s socket abort due to error - %e', direction, lOptsStr, err);
166
+ log('%s socket abort due to error', lOptsStr, err);
159
167
  // the abortSignalListener may already destroyed the socket with an error
160
- socket.destroy();
168
+ if (!socket.destroyed) {
169
+ socket.destroy(err);
170
+ }
161
171
  // closing a socket is always asynchronous (must wait for "close" event)
162
172
  // but the tests expect this to be a synchronous operation so we have to
163
173
  // set the close time here. the tests should be refactored to reflect
164
174
  // reality.
165
- maConn.timeline.close = Date.now();
175
+ if (maConn.timeline.close == null) {
176
+ maConn.timeline.close = Date.now();
177
+ }
166
178
  },
167
179
  log
168
180
  };
169
181
  return maConn;
170
182
  };
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
- }
179
- };
180
- // @ts-expect-error partial implementation
181
- return eventTarget;
182
- }
183
183
  //# 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,iBAAiB,IAAI,WAAW,EAAE,MAAM,oCAAoC,CAAA;AACrF,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAkBjD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAc,EAAE,OAA4B,EAAuB,EAAE;IACzG,IAAI,YAAmC,CAAA;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAA;IAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,EAAE,CAAA;IAC/C,MAAM,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,IAAI,cAAc,CAAA;IAC3E,MAAM,YAAY,GAAG,OAAO,CAAC,kBAAkB,IAAI,aAAa,CAAA;IAChE,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,OAAO,GAAG,KAAK,CAAA;IAEnB,2CAA2C;IAC3C,IAAI,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;QAC7C,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,CAAA;IAC5C,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC;QAC1C,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,UAAU,CAAA;IACxC,CAAC;IAED,uBAAuB;IACvB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;QACvB,OAAO,GAAG,IAAI,CAAA;QAEd,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;YACjD,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,YAAY,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,CAAA;QAChB,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,IAAI,UAAqB,CAAA;IAEzB,IAAI,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QAC/B,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;IACjC,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;YAC9D,6FAA6F;YAC7F,6EAA6E;YAC7E,MAAM,IAAI,sBAAsB,CAAC,4CAA4C,CAAC,CAAA;QAChF,CAAC;QAED,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,KAAK,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,EAAE,EAAE,CAAA;IACxE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAEvC,iCAAiC;IACjC,0FAA0F;IAC1F,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAA;IAEpC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;QAC1B,QAAQ,GAAG,IAAI,CAAA;QACf,GAAG,CAAC,2BAA2B,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;QACrD,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,YAAY,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QAExD,kFAAkF;QAClF,uEAAuE;QACvE,MAAM,CAAC,OAAO,CAAC,IAAI,YAAY,EAAE,CAAC,CAAA;QAClC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;QACxB,+BAA+B;QAC/B,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,GAAG,CAAC,oBAAoB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;YAC9C,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,YAAY,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;QACxD,CAAC;QAED,wDAAwD;QACxD,kEAAkE;QAClE,WAAW;QACX,MAAM,CAAC,OAAO,EAAE,CAAA;QAChB,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACpC,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;QACtB,qEAAqE;QACrE,mEAAmE;QACnE,GAAG,CAAC,kBAAkB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;QAC5C,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAwB;QAClC,KAAK,CAAC,IAAI,CAAE,MAAM;YAChB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,CAAC,KAAK,SAAU,CAAC;oBAC1B,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;wBAC/B,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;4BAC9B,MAAM,GAAG,CAAA;wBACX,CAAC;6BAAM,CAAC;4BACN,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAA;wBACtB,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC,CAAA;YACP,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,kCAAkC;gBAClC,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAC3B,uEAAuE;oBACvE,qDAAqD;oBACrD,uEAAuE;oBACvE,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;gBACjE,CAAC;YACH,CAAC;YAED,iDAAiD;YACjD,MAAM,CAAC,GAAG,EAAE,CAAA;QACd,CAAC;QAED,MAAM;QAEN,kFAAkF;QAClF,UAAU;QAEV,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;QAE9B,KAAK,CAAC,KAAK,CAAE,UAAwB,EAAE;YACrC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,GAAG,CAAC,oCAAoC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;gBAC9D,OAAM;YACR,CAAC;YAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,GAAG,CAAC,uCAAuC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;gBACjE,OAAM;YACR,CAAC;YAED,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;gBACzB,OAAO,YAAY,CAAC,OAAO,CAAA;YAC7B,CAAC;YAED,IAAI,CAAC;gBACH,YAAY,GAAG,MAAM,EAAE,CAAA;gBAEvB,+BAA+B;gBAC/B,MAAM,CAAC,GAAG,EAAE,CAAA;gBAEZ,sCAAsC;gBACtC,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAA;gBAE/C,8BAA8B;gBAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;gBAElE,sCAAsC;gBACtC,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;oBAC9B,GAAG,CAAC,uBAAuB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;oBACjD,MAAM,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE;wBAC5C,UAAU,EAAE,OAAO;qBACpB,CAAC,CAAA;oBACF,GAAG,CAAC,sBAAsB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;gBAClD,CAAC;gBAED,MAAM,OAAO,CAAC,GAAG,CAAC;oBAChB,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE;wBACtC,UAAU,EAAE,OAAO;qBACpB,CAAC;oBAEF,qDAAqD;oBACrD,MAAM,CAAC,OAAO,EAAE;iBACjB,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjB,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,OAAO,EAAE,CAAA;YACxB,CAAC;QACH,CAAC;QAED,KAAK,EAAE,CAAC,GAAU,EAAE,EAAE;YACpB,GAAG,CAAC,sCAAsC,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;YAErE,yEAAyE;YACzE,MAAM,CAAC,OAAO,EAAE,CAAA;YAEhB,wEAAwE;YACxE,wEAAwE;YACxE,qEAAqE;YACrE,WAAW;YACX,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACpC,CAAC;QAED,GAAG;KACJ,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,SAAS,mBAAmB,CAAE,GAAS;IACrC,MAAM,WAAW,GAAG;QAClB,gBAAgB,EAAE,CAAC,IAAS,EAAE,EAAO,EAAE,EAAE;YACvC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC3B,CAAC;QACD,mBAAmB,EAAE,CAAC,IAAS,EAAE,EAAO,EAAE,EAAE;YAC1C,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC9B,CAAC;KACF,CAAA;IAED,0CAA0C;IAC1C,OAAO,WAAW,CAAA;AACpB,CAAC"}
1
+ {"version":3,"file":"socket-to-conn.js","sourceRoot":"","sources":["../../src/socket-to-conn.ts"],"names":[],"mappings":"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"}
@@ -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;AAOlG,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;IAmClE,QAAQ,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IA2ExE;;;;OAIG;IACH,cAAc,CAAE,OAAO,EAAE,wBAAwB,GAAG,QAAQ;IAc5D;;OAEG;IACH,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAgBnD;;OAEG;IACH,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;CAGlD"}
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;AAOlG,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,EAAE,MAAM,mBAAmB,CAAA;AAChF,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;IAehE,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;IA8BlE,QAAQ,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAsExE;;;;OAIG;IACH,cAAc,CAAE,OAAO,EAAE,wBAAwB,GAAG,QAAQ;IAc5D;;OAEG;IACH,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAgBnD;;OAEG;IACH,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;CAGlD"}
package/dist/src/tcp.js CHANGED
@@ -45,11 +45,7 @@ export class TCP {
45
45
  this.components = components;
46
46
  if (components.metrics != null) {
47
47
  this.metrics = {
48
- events: components.metrics.registerCounterGroup('libp2p_tcp_dialer_events_total', {
49
- label: 'event',
50
- help: 'Total count of TCP dialer events by type'
51
- }),
52
- errors: components.metrics.registerCounterGroup('libp2p_tcp_dialer_errors_total', {
48
+ dialerEvents: components.metrics.registerCounterGroup('libp2p_tcp_dialer_events_total', {
53
49
  label: 'event',
54
50
  help: 'Total count of TCP dialer events by type'
55
51
  })
@@ -66,28 +62,22 @@ export class TCP {
66
62
  options.noDelay = options.noDelay ?? true;
67
63
  // options.signal destroys the socket before 'connect' event
68
64
  const socket = await this._connect(ma, options);
69
- let maConn;
70
- try {
71
- maConn = toMultiaddrConnection(socket, {
72
- remoteAddr: ma,
73
- socketInactivityTimeout: this.opts.outboundSocketInactivityTimeout,
74
- socketCloseTimeout: this.opts.socketCloseTimeout,
75
- metrics: this.metrics?.events,
76
- logger: this.components.logger,
77
- direction: 'outbound'
78
- });
79
- }
80
- catch (err) {
81
- this.metrics?.errors.increment({ outbound_to_connection: true });
82
- socket.destroy(err);
83
- throw err;
84
- }
65
+ // Avoid uncaught errors caused by unstable connections
66
+ socket.on('error', err => {
67
+ this.log('socket error', err);
68
+ });
69
+ const maConn = toMultiaddrConnection(socket, {
70
+ remoteAddr: ma,
71
+ socketInactivityTimeout: this.opts.outboundSocketInactivityTimeout,
72
+ socketCloseTimeout: this.opts.socketCloseTimeout,
73
+ metrics: this.metrics?.dialerEvents,
74
+ logger: this.components.logger
75
+ });
85
76
  try {
86
77
  this.log('new outbound connection %s', maConn.remoteAddr);
87
78
  return await options.upgrader.upgradeOutbound(maConn, options);
88
79
  }
89
80
  catch (err) {
90
- this.metrics?.errors.increment({ outbound_upgrade: true });
91
81
  this.log.error('error upgrading outbound connection', err);
92
82
  maConn.abort(err);
93
83
  throw err;
@@ -96,7 +86,6 @@ export class TCP {
96
86
  async _connect(ma, options) {
97
87
  options.signal?.throwIfAborted();
98
88
  options.onProgress?.(new CustomProgressEvent('tcp:open-connection'));
99
- let rawSocket;
100
89
  return new Promise((resolve, reject) => {
101
90
  const start = Date.now();
102
91
  const cOpts = multiaddrToNetConfig(ma, {
@@ -104,29 +93,29 @@ export class TCP {
104
93
  ...options
105
94
  });
106
95
  this.log('dialing %a', ma);
107
- rawSocket = net.connect(cOpts);
96
+ const rawSocket = net.connect(cOpts);
108
97
  const onError = (err) => {
109
- this.log.error('dial to %a errored - %e', ma, err);
110
98
  const cOptsStr = cOpts.path ?? `${cOpts.host ?? ''}:${cOpts.port}`;
111
99
  err.message = `connection error ${cOptsStr}: ${err.message}`;
112
- this.metrics?.events.increment({ error: true });
100
+ this.metrics?.dialerEvents.increment({ error: true });
113
101
  done(err);
114
102
  };
115
103
  const onTimeout = () => {
116
104
  this.log('connection timeout %a', ma);
117
- this.metrics?.events.increment({ timeout: true });
118
- const err = new TimeoutError(`Connection timeout after ${Date.now() - start}ms`);
105
+ this.metrics?.dialerEvents.increment({ timeout: true });
106
+ const err = new TimeoutError(`connection timeout after ${Date.now() - start}ms`);
119
107
  // Note: this will result in onError() being called
120
108
  rawSocket.emit('error', err);
121
109
  };
122
110
  const onConnect = () => {
123
111
  this.log('connection opened %a', ma);
124
- this.metrics?.events.increment({ connect: true });
112
+ this.metrics?.dialerEvents.increment({ connect: true });
125
113
  done();
126
114
  };
127
115
  const onAbort = () => {
128
116
  this.log('connection aborted %a', ma);
129
- this.metrics?.events.increment({ abort: true });
117
+ this.metrics?.dialerEvents.increment({ abort: true });
118
+ rawSocket.destroy();
130
119
  done(new AbortError());
131
120
  };
132
121
  const done = (err) => {
@@ -148,10 +137,6 @@ export class TCP {
148
137
  if (options.signal != null) {
149
138
  options.signal.addEventListener('abort', onAbort);
150
139
  }
151
- })
152
- .catch(err => {
153
- rawSocket?.destroy();
154
- throw err;
155
140
  });
156
141
  }
157
142
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../src/tcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tcp.js","sourceRoot":"","sources":["../../src/tcp.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/tcp",
3
- "version": "10.0.6-24fa1d5af",
3
+ "version": "10.0.6-d9c7e0f7e",
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/main/packages/transport-tcp#readme",
@@ -60,22 +60,21 @@
60
60
  "test:electron-main": "aegir test -t electron-main"
61
61
  },
62
62
  "dependencies": {
63
- "@libp2p/interface": "2.1.2-24fa1d5af",
64
- "@libp2p/utils": "6.0.6-24fa1d5af",
63
+ "@libp2p/interface": "2.1.2-d9c7e0f7e",
64
+ "@libp2p/utils": "6.0.6-d9c7e0f7e",
65
65
  "@multiformats/mafmt": "^12.1.6",
66
66
  "@multiformats/multiaddr": "^12.2.3",
67
67
  "@types/sinon": "^17.0.3",
68
- "p-defer": "^4.0.1",
69
68
  "progress-events": "^1.0.0",
70
- "race-event": "^1.3.0",
71
69
  "stream-to-it": "^1.0.1"
72
70
  },
73
71
  "devDependencies": {
74
- "@libp2p/interface-compliance-tests": "6.1.4-24fa1d5af",
75
- "@libp2p/logger": "5.1.0-24fa1d5af",
72
+ "@libp2p/interface-compliance-tests": "6.1.4-d9c7e0f7e",
73
+ "@libp2p/logger": "5.1.0-d9c7e0f7e",
76
74
  "aegir": "^44.0.1",
77
75
  "it-all": "^3.0.6",
78
76
  "it-pipe": "^3.0.1",
77
+ "p-defer": "^4.0.1",
79
78
  "sinon": "^18.0.0",
80
79
  "uint8arrays": "^5.1.0",
81
80
  "wherearewe": "^2.0.1"
package/src/constants.ts CHANGED
@@ -7,4 +7,4 @@ export const CODE_UNIX = 400
7
7
  export const CLOSE_TIMEOUT = 500
8
8
 
9
9
  // Close the socket if there is no activity after this long in ms
10
- export const SOCKET_TIMEOUT = 2 * 60000 // 2 mins
10
+ export const SOCKET_TIMEOUT = 5 * 60000 // 5 mins
package/src/index.ts CHANGED
@@ -123,8 +123,7 @@ export interface TCPComponents {
123
123
  }
124
124
 
125
125
  export interface TCPMetrics {
126
- events: CounterGroup<'error' | 'timeout' | 'connect' | 'abort'>
127
- errors: CounterGroup<'outbound_to_connection' | 'outbound_upgrade'>
126
+ dialerEvents: CounterGroup<'error' | 'timeout' | 'connect' | 'abort'>
128
127
  }
129
128
 
130
129
  export function tcp (init: TCPOptions = {}): (components: TCPComponents) => Transport {
package/src/listener.ts CHANGED
@@ -163,19 +163,20 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
163
163
  this.safeDispatchEvent('close')
164
164
  }
165
165
  })
166
- .on('drop', () => {
167
- this.metrics?.events.increment({ [`${this.addr} drop`]: true })
168
- })
169
166
  }
170
167
 
171
168
  private onSocket (socket: net.Socket): void {
172
- this.metrics?.events.increment({ [`${this.addr} connection`]: true })
173
-
174
169
  if (this.status.code !== TCPListenerStatusCode.ACTIVE) {
175
170
  socket.destroy()
176
171
  throw new NotStartedError('Server is not listening yet')
177
172
  }
178
173
 
174
+ // Avoid uncaught errors caused by unstable connections
175
+ socket.on('error', err => {
176
+ this.log('socket error', err)
177
+ this.metrics?.events.increment({ [`${this.addr} error`]: true })
178
+ })
179
+
179
180
  let maConn: MultiaddrConnection
180
181
  try {
181
182
  maConn = toMultiaddrConnection(socket, {
@@ -184,13 +185,11 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
184
185
  socketCloseTimeout: this.context.socketCloseTimeout,
185
186
  metrics: this.metrics?.events,
186
187
  metricPrefix: `${this.addr} `,
187
- logger: this.context.logger,
188
- direction: 'inbound'
188
+ logger: this.context.logger
189
189
  })
190
- } catch (err: any) {
190
+ } catch (err) {
191
191
  this.log.error('inbound connection failed', err)
192
192
  this.metrics?.errors.increment({ [`${this.addr} inbound_to_connection`]: true })
193
- socket.destroy()
194
193
  return
195
194
  }
196
195