@libp2p/tcp 10.0.5 → 10.0.6-24fa1d5af

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,5 +1,7 @@
1
- import { AbortError, InvalidParametersError, TimeoutError } from '@libp2p/interface';
1
+ import { 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';
3
5
  import { duplex } from 'stream-to-it';
4
6
  import { CLOSE_TIMEOUT, SOCKET_TIMEOUT } from './constants.js';
5
7
  import { multiaddrToNetConfig } from './utils.js';
@@ -8,12 +10,15 @@ import { multiaddrToNetConfig } from './utils.js';
8
10
  * https://github.com/libp2p/interface-transport#multiaddrconnection
9
11
  */
10
12
  export const toMultiaddrConnection = (socket, options) => {
11
- let closePromise = null;
13
+ let closePromise;
12
14
  const log = options.logger.forComponent('libp2p:tcp:socket');
15
+ const direction = options.direction;
13
16
  const metrics = options.metrics;
14
17
  const metricPrefix = options.metricPrefix ?? '';
15
18
  const inactivityTimeout = options.socketInactivityTimeout ?? SOCKET_TIMEOUT;
16
19
  const closeTimeout = options.socketCloseTimeout ?? CLOSE_TIMEOUT;
20
+ let timedout = false;
21
+ let errored = false;
17
22
  // Check if we are connected on a unix path
18
23
  if (options.listeningAddr?.getPath() != null) {
19
24
  options.remoteAddr = options.listeningAddr;
@@ -21,6 +26,16 @@ export const toMultiaddrConnection = (socket, options) => {
21
26
  if (options.remoteAddr?.getPath() != null) {
22
27
  options.localAddr = options.remoteAddr;
23
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
+ });
24
39
  let remoteAddr;
25
40
  if (options.remoteAddr != null) {
26
41
  remoteAddr = options.remoteAddr;
@@ -38,32 +53,32 @@ export const toMultiaddrConnection = (socket, options) => {
38
53
  const { sink, source } = duplex(socket);
39
54
  // by default there is no timeout
40
55
  // https://nodejs.org/dist/latest-v16.x/docs/api/net.html#socketsettimeouttimeout-callback
41
- socket.setTimeout(inactivityTimeout, () => {
42
- log('%s socket read timeout', lOptsStr);
56
+ socket.setTimeout(inactivityTimeout);
57
+ socket.once('timeout', () => {
58
+ timedout = true;
59
+ log('%s %s socket read timeout', direction, lOptsStr);
43
60
  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
- }
49
61
  // if the socket times out due to inactivity we must manually close the connection
50
62
  // https://nodejs.org/dist/latest-v16.x/docs/api/net.html#event-timeout
51
- socket.destroy(err);
63
+ socket.destroy(new TimeoutError());
64
+ maConn.timeline.close = Date.now();
52
65
  });
53
66
  socket.once('close', () => {
54
- log('%s socket close', lOptsStr);
55
- metrics?.increment({ [`${metricPrefix}close`]: true });
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
+ }
56
72
  // In instances where `close` was not explicitly called,
57
73
  // such as an iterable stream ending, ensure we have set the close
58
74
  // timeline
59
- if (maConn.timeline.close == null) {
60
- maConn.timeline.close = Date.now();
61
- }
75
+ socket.destroy();
76
+ maConn.timeline.close = Date.now();
62
77
  });
63
78
  socket.once('end', () => {
64
79
  // the remote sent a FIN packet which means no more data will be sent
65
80
  // https://nodejs.org/dist/latest-v16.x/docs/api/net.html#event-end
66
- log('%s socket end', lOptsStr);
81
+ log('%s %s socket end', direction, lOptsStr);
67
82
  metrics?.increment({ [`${metricPrefix}end`]: true });
68
83
  });
69
84
  const maConn = {
@@ -86,7 +101,7 @@ export const toMultiaddrConnection = (socket, options) => {
86
101
  // If the source errored the socket will already have been destroyed by
87
102
  // duplex(). If the socket errored it will already be
88
103
  // destroyed. There's nothing to do here except log the error & return.
89
- log.error('%s error in sink', lOptsStr, err);
104
+ log.error('%s %s error in sink - %e', direction, lOptsStr, err);
90
105
  }
91
106
  }
92
107
  // we have finished writing, send the FIN message
@@ -97,82 +112,72 @@ export const toMultiaddrConnection = (socket, options) => {
97
112
  remoteAddr,
98
113
  timeline: { open: Date.now() },
99
114
  async close(options = {}) {
115
+ if (socket.closed) {
116
+ log('the %s %s socket is already closed', direction, lOptsStr);
117
+ return;
118
+ }
100
119
  if (socket.destroyed) {
101
- log('The %s socket is destroyed', lOptsStr);
120
+ log('the %s %s socket is already destroyed', direction, lOptsStr);
102
121
  return;
103
122
  }
104
123
  if (closePromise != null) {
105
- log('The %s socket is closed or closing', lOptsStr);
106
- return closePromise;
107
- }
108
- if (options.signal == null) {
109
- const signal = AbortSignal.timeout(closeTimeout);
110
- options = {
111
- ...options,
112
- signal
113
- };
124
+ return closePromise.promise;
114
125
  }
115
- const abortSignalListener = () => {
116
- socket.destroy(new AbortError('Destroying socket after timeout'));
117
- };
118
- options.signal?.addEventListener('abort', abortSignalListener);
119
126
  try {
120
- log('%s closing socket', lOptsStr);
121
- closePromise = new Promise((resolve, reject) => {
122
- socket.once('close', () => {
123
- // socket completely closed
124
- log('%s socket closed', lOptsStr);
125
- resolve();
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'
126
139
  });
127
- socket.once('error', (err) => {
128
- log('%s socket error', lOptsStr, err);
129
- // error closing socket
130
- if (maConn.timeline.close == null) {
131
- maConn.timeline.close = Date.now();
132
- }
133
- if (!socket.destroyed) {
134
- reject(err);
135
- }
136
- // if socket is destroyed, 'closed' event will be emitted later to resolve the promise
137
- });
138
- // shorten inactivity timeout
139
- socket.setTimeout(closeTimeout);
140
- // close writable end of the socket
141
- socket.end();
142
- if (socket.writableLength > 0) {
143
- // there are outgoing bytes waiting to be sent
144
- socket.once('drain', () => {
145
- log('%s socket drained', lOptsStr);
146
- // all bytes have been sent we can destroy the socket (maybe) before the timeout
147
- socket.destroy();
148
- });
149
- }
150
- else {
151
- // nothing to send, destroy immediately, no need for the timeout
152
- socket.destroy();
153
- }
154
- });
155
- await closePromise;
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
+ ]);
156
149
  }
157
150
  catch (err) {
158
151
  this.abort(err);
159
152
  }
160
153
  finally {
161
- options.signal?.removeEventListener('abort', abortSignalListener);
154
+ closePromise.resolve();
162
155
  }
163
156
  },
164
157
  abort: (err) => {
165
- log('%s socket abort due to error', lOptsStr, err);
158
+ log('%s %s socket abort due to error - %e', direction, lOptsStr, err);
166
159
  // the abortSignalListener may already destroyed the socket with an error
167
- if (!socket.destroyed) {
168
- socket.destroy(err);
169
- }
170
- if (maConn.timeline.close == null) {
171
- maConn.timeline.close = Date.now();
172
- }
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();
173
166
  },
174
167
  log
175
168
  };
176
169
  return maConn;
177
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
+ }
179
+ };
180
+ // @ts-expect-error partial implementation
181
+ return eventTarget;
182
+ }
178
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":"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"}
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,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"}
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"}
package/dist/src/tcp.js CHANGED
@@ -45,7 +45,11 @@ export class TCP {
45
45
  this.components = components;
46
46
  if (components.metrics != null) {
47
47
  this.metrics = {
48
- dialerEvents: components.metrics.registerCounterGroup('libp2p_tcp_dialer_events_total', {
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', {
49
53
  label: 'event',
50
54
  help: 'Total count of TCP dialer events by type'
51
55
  })
@@ -62,22 +66,28 @@ export class TCP {
62
66
  options.noDelay = options.noDelay ?? true;
63
67
  // options.signal destroys the socket before 'connect' event
64
68
  const socket = await this._connect(ma, options);
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
- });
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
+ }
76
85
  try {
77
86
  this.log('new outbound connection %s', maConn.remoteAddr);
78
87
  return await options.upgrader.upgradeOutbound(maConn, options);
79
88
  }
80
89
  catch (err) {
90
+ this.metrics?.errors.increment({ outbound_upgrade: true });
81
91
  this.log.error('error upgrading outbound connection', err);
82
92
  maConn.abort(err);
83
93
  throw err;
@@ -86,6 +96,7 @@ export class TCP {
86
96
  async _connect(ma, options) {
87
97
  options.signal?.throwIfAborted();
88
98
  options.onProgress?.(new CustomProgressEvent('tcp:open-connection'));
99
+ let rawSocket;
89
100
  return new Promise((resolve, reject) => {
90
101
  const start = Date.now();
91
102
  const cOpts = multiaddrToNetConfig(ma, {
@@ -93,29 +104,29 @@ export class TCP {
93
104
  ...options
94
105
  });
95
106
  this.log('dialing %a', ma);
96
- const rawSocket = net.connect(cOpts);
107
+ rawSocket = net.connect(cOpts);
97
108
  const onError = (err) => {
109
+ this.log.error('dial to %a errored - %e', ma, err);
98
110
  const cOptsStr = cOpts.path ?? `${cOpts.host ?? ''}:${cOpts.port}`;
99
111
  err.message = `connection error ${cOptsStr}: ${err.message}`;
100
- this.metrics?.dialerEvents.increment({ error: true });
112
+ this.metrics?.events.increment({ error: true });
101
113
  done(err);
102
114
  };
103
115
  const onTimeout = () => {
104
116
  this.log('connection timeout %a', ma);
105
- this.metrics?.dialerEvents.increment({ timeout: true });
106
- const err = new TimeoutError(`connection timeout after ${Date.now() - start}ms`);
117
+ this.metrics?.events.increment({ timeout: true });
118
+ const err = new TimeoutError(`Connection timeout after ${Date.now() - start}ms`);
107
119
  // Note: this will result in onError() being called
108
120
  rawSocket.emit('error', err);
109
121
  };
110
122
  const onConnect = () => {
111
123
  this.log('connection opened %a', ma);
112
- this.metrics?.dialerEvents.increment({ connect: true });
124
+ this.metrics?.events.increment({ connect: true });
113
125
  done();
114
126
  };
115
127
  const onAbort = () => {
116
128
  this.log('connection aborted %a', ma);
117
- this.metrics?.dialerEvents.increment({ abort: true });
118
- rawSocket.destroy();
129
+ this.metrics?.events.increment({ abort: true });
119
130
  done(new AbortError());
120
131
  };
121
132
  const done = (err) => {
@@ -137,6 +148,10 @@ export class TCP {
137
148
  if (options.signal != null) {
138
149
  options.signal.addEventListener('abort', onAbort);
139
150
  }
151
+ })
152
+ .catch(err => {
153
+ rawSocket?.destroy();
154
+ throw err;
140
155
  });
141
156
  }
142
157
  /**
@@ -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.5",
3
+ "version": "10.0.6-24fa1d5af",
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,21 +60,22 @@
60
60
  "test:electron-main": "aegir test -t electron-main"
61
61
  },
62
62
  "dependencies": {
63
- "@libp2p/interface": "^2.1.2",
64
- "@libp2p/utils": "^6.0.5",
63
+ "@libp2p/interface": "2.1.2-24fa1d5af",
64
+ "@libp2p/utils": "6.0.6-24fa1d5af",
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",
68
69
  "progress-events": "^1.0.0",
70
+ "race-event": "^1.3.0",
69
71
  "stream-to-it": "^1.0.1"
70
72
  },
71
73
  "devDependencies": {
72
- "@libp2p/interface-compliance-tests": "^6.1.3",
73
- "@libp2p/logger": "^5.1.0",
74
+ "@libp2p/interface-compliance-tests": "6.1.4-24fa1d5af",
75
+ "@libp2p/logger": "5.1.0-24fa1d5af",
74
76
  "aegir": "^44.0.1",
75
77
  "it-all": "^3.0.6",
76
78
  "it-pipe": "^3.0.1",
77
- "p-defer": "^4.0.1",
78
79
  "sinon": "^18.0.0",
79
80
  "uint8arrays": "^5.1.0",
80
81
  "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 = 5 * 60000 // 5 mins
10
+ export const SOCKET_TIMEOUT = 2 * 60000 // 2 mins
package/src/index.ts CHANGED
@@ -123,7 +123,8 @@ export interface TCPComponents {
123
123
  }
124
124
 
125
125
  export interface TCPMetrics {
126
- dialerEvents: CounterGroup<'error' | 'timeout' | 'connect' | 'abort'>
126
+ events: CounterGroup<'error' | 'timeout' | 'connect' | 'abort'>
127
+ errors: CounterGroup<'outbound_to_connection' | 'outbound_upgrade'>
127
128
  }
128
129
 
129
130
  export function tcp (init: TCPOptions = {}): (components: TCPComponents) => Transport {
package/src/listener.ts CHANGED
@@ -163,17 +163,18 @@ 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
+ })
166
169
  }
167
170
 
168
171
  private onSocket (socket: net.Socket): void {
172
+ this.metrics?.events.increment({ [`${this.addr} connection`]: true })
173
+
169
174
  if (this.status.code !== TCPListenerStatusCode.ACTIVE) {
175
+ socket.destroy()
170
176
  throw new NotStartedError('Server is not listening yet')
171
177
  }
172
- // Avoid uncaught errors caused by unstable connections
173
- socket.on('error', err => {
174
- this.log('socket error', err)
175
- this.metrics?.events.increment({ [`${this.addr} error`]: true })
176
- })
177
178
 
178
179
  let maConn: MultiaddrConnection
179
180
  try {
@@ -183,11 +184,13 @@ export class TCPListener extends TypedEventEmitter<ListenerEvents> implements Li
183
184
  socketCloseTimeout: this.context.socketCloseTimeout,
184
185
  metrics: this.metrics?.events,
185
186
  metricPrefix: `${this.addr} `,
186
- logger: this.context.logger
187
+ logger: this.context.logger,
188
+ direction: 'inbound'
187
189
  })
188
- } catch (err) {
190
+ } catch (err: any) {
189
191
  this.log.error('inbound connection failed', err)
190
192
  this.metrics?.errors.increment({ [`${this.addr} inbound_to_connection`]: true })
193
+ socket.destroy()
191
194
  return
192
195
  }
193
196