libp2p 0.37.0-1f5d5c2 → 0.37.0-35f9c0c

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 +1 @@
1
- {"version":3,"file":"dial-request.d.ts","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/dial-request.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAIxC,MAAM,WAAW,UAAU;IACzB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IAEvC;;;;;;OAMG;gBACU,OAAO,EAAE,kBAAkB;IAYlC,GAAG,CAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;CA+D5D"}
1
+ {"version":3,"file":"dial-request.d.ts","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/dial-request.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAIxC,MAAM,WAAW,UAAU;IACzB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,EAAE,CAAA;IAClB,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IAEvC;;;;;;OAMG;gBACU,OAAO,EAAE,kBAAkB;IAYlC,GAAG,CAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;CAyF5D"}
@@ -49,15 +49,25 @@ export class DialRequest {
49
49
  catch { }
50
50
  }
51
51
  let completedDials = 0;
52
+ let done = false;
52
53
  try {
53
54
  return await Promise.any(this.addrs.map(async (addr, i) => {
54
55
  const token = await tokenHolder.shift(); // get token
56
+ // End attempt once another attempt succeeded
57
+ if (done) {
58
+ this.dialer.releaseToken(tokens.splice(tokens.indexOf(token), 1)[0]);
59
+ throw errCode(new Error('dialAction already succeeded'), codes.ERR_ALREADY_SUCCEEDED);
60
+ }
61
+ const controller = dialAbortControllers[i];
62
+ if (controller == null) {
63
+ throw errCode(new Error('dialAction did not come with an AbortController'), codes.ERR_INVALID_PARAMETERS);
64
+ }
55
65
  let conn;
56
66
  try {
57
- const signal = dialAbortControllers[i].signal;
67
+ const signal = controller.signal;
58
68
  conn = await this.dialAction(addr, { ...options, signal: (options.signal != null) ? anySignal([signal, options.signal]) : signal });
59
69
  // Remove the successful AbortController so it is not aborted
60
- dialAbortControllers.splice(i, 1);
70
+ dialAbortControllers[i] = undefined;
61
71
  }
62
72
  finally {
63
73
  completedDials++;
@@ -71,11 +81,26 @@ export class DialRequest {
71
81
  this.dialer.releaseToken(tokens.splice(tokens.indexOf(token), 1)[0]);
72
82
  }
73
83
  }
84
+ if (conn == null) {
85
+ // Notify Promise.any that attempt was not successful
86
+ // to prevent from returning undefined despite there
87
+ // were successful dial attempts
88
+ throw errCode(new Error('dialAction led to empty object'), codes.ERR_TRANSPORT_DIAL_FAILED);
89
+ }
90
+ else {
91
+ // This dial succeeded, don't attempt anything else
92
+ done = true;
93
+ }
74
94
  return conn;
75
95
  }));
76
96
  }
77
97
  finally {
78
- dialAbortControllers.map(c => c.abort()); // success/failure happened, abort everything else
98
+ // success/failure happened, abort everything else
99
+ dialAbortControllers.forEach(c => {
100
+ if (c !== undefined) {
101
+ c.abort();
102
+ }
103
+ });
79
104
  tokens.forEach(token => this.dialer.releaseToken(token)); // release tokens back to the dialer
80
105
  }
81
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dial-request.js","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/dial-request.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,IAAI,MAAM,QAAQ,CAAA;AACzB,qEAAqE;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAMvC,MAAM,GAAG,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAA;AAYhD,MAAM,OAAO,WAAW;IAKtB;;;;;;OAMG;IACH,YAAa,OAA2B;QACtC,MAAM,EACJ,KAAK,EACL,UAAU,EACV,MAAM,EACP,GAAG,OAAO,CAAA;QAEX,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,GAAG,CAAE,UAAwB,EAAE;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAEvD,oCAAoC;QACpC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAA;SAC/E;QAED,MAAM,WAAW,GAAG,IAAI,IAAI,EAAU,CAAA;QAEtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,KAAK,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACvC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAChB,CAAC,CAAC,CAAA;SACH;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAC/C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;YACxC,IAAI;gBACF,uBAAuB;gBACvB,eAAe,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;aAC/C;YAAC,MAAM,GAAE;YAEV,OAAO,UAAU,CAAA;QACnB,CAAC,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;YAC1B,IAAI;gBACF,uBAAuB;gBACvB,eAAe,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;aAC5C;YAAC,MAAM,GAAE;SACX;QAED,IAAI,cAAc,GAAG,CAAC,CAAA;QAEtB,IAAI;YACF,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;gBACxD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAA,CAAC,YAAY;gBACpD,IAAI,IAAI,CAAA;gBACR,IAAI;oBACF,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;oBAC7C,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;oBACnI,6DAA6D;oBAC7D,oBAAoB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;iBAClC;wBAAS;oBACR,cAAc,EAAE,CAAA;oBAChB,gGAAgG;oBAChG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE;wBACvD,KAAK,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;4BACvC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;wBAChB,CAAC,CAAC,CAAA;qBACH;yBAAM;wBACL,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;qBACrE;iBACF;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CAAC,CAAA;SACJ;gBAAS;YACR,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA,CAAC,kDAAkD;YAC3F,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA,CAAC,oCAAoC;SAC9F;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"dial-request.js","sourceRoot":"","sources":["../../../../src/connection-manager/dialer/dial-request.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,7 @@ export declare enum codes {
68
68
  ERR_INVALID_PASS_LENGTH = "ERR_INVALID_PASS_LENGTH",
69
69
  ERR_NOT_IMPLEMENTED = "ERR_NOT_IMPLEMENTED",
70
70
  ERR_WRONG_PING_ACK = "ERR_WRONG_PING_ACK",
71
- ERR_INVALID_RECORD = "ERR_INVALID_RECORD"
71
+ ERR_INVALID_RECORD = "ERR_INVALID_RECORD",
72
+ ERR_ALREADY_SUCCEEDED = "ERR_ALREADY_SUCCEEDED"
72
73
  }
73
74
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,eAAe,uCAAuC;IACtD,YAAY,yBAAyB;IACrC,eAAe,4BAA4B;IAC3C,wBAAwB,0DAA0D;IAClF,uBAAuB,8CAA8C;IACrE,sBAAsB,+DAA+D;IACrF,SAAS,cAAc;CACxB;AAED,oBAAY,KAAK;IACf,YAAY,qBAAqB;IACjC,mBAAmB,wBAAwB;IAC3C,kBAAkB,2BAA2B;IAC7C,eAAe,wBAAwB;IACvC,wBAAwB,iCAAiC;IACzD,uBAAuB,4BAA4B;IACnD,sBAAsB,2BAA2B;IACjD,yBAAyB,8BAA8B;IACvD,0BAA0B,+BAA+B;IACzD,gCAAgC,qCAAqC;IACrE,oBAAoB,yBAAyB;IAC7C,qBAAqB,0BAA0B;IAC/C,oBAAoB,yBAAyB;IAC7C,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;IACjD,sBAAsB,2BAA2B;IACjD,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;IAC3C,uBAAuB,4BAA4B;IACnD,qBAAqB,0BAA0B;IAC/C,sBAAsB,2BAA2B;IACjD,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;IACjD,gBAAgB,qBAAqB;IACrC,qBAAqB,0BAA0B;IAC/C,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,yBAAyB,8BAA8B;IACvD,yBAAyB,8BAA8B;IACvD,wBAAwB,6BAA6B;IACrD,uCAAuC,4CAA4C;IACnF,qBAAqB,0BAA0B;IAC/C,uBAAuB,4BAA4B;IACnD,aAAa,kBAAkB;IAC/B,wBAAwB,6BAA6B;IACrD,8BAA8B,mCAAmC;IACjE,kBAAkB,uBAAuB;IACzC,qBAAqB,0BAA0B;IAC/C,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IACzB,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;IAC7C,sBAAsB,2BAA2B;IACjD,oBAAoB,yBAAyB;IAC7C,iBAAiB,sBAAsB;IACvC,wBAAwB,6BAA6B;IACrD,wBAAwB,6BAA6B;IACrD,qBAAqB,0BAA0B;IAC/C,gBAAgB,qBAAqB;IACrC,mBAAmB,wBAAwB;IAC3C,uBAAuB,4BAA4B;IACnD,sBAAsB,2BAA2B;IACjD,yBAAyB,8BAA8B;IACvD,yBAAyB,8BAA8B;IACvD,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;IAC3C,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;CAC1C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,eAAe,uCAAuC;IACtD,YAAY,yBAAyB;IACrC,eAAe,4BAA4B;IAC3C,wBAAwB,0DAA0D;IAClF,uBAAuB,8CAA8C;IACrE,sBAAsB,+DAA+D;IACrF,SAAS,cAAc;CACxB;AAED,oBAAY,KAAK;IACf,YAAY,qBAAqB;IACjC,mBAAmB,wBAAwB;IAC3C,kBAAkB,2BAA2B;IAC7C,eAAe,wBAAwB;IACvC,wBAAwB,iCAAiC;IACzD,uBAAuB,4BAA4B;IACnD,sBAAsB,2BAA2B;IACjD,yBAAyB,8BAA8B;IACvD,0BAA0B,+BAA+B;IACzD,gCAAgC,qCAAqC;IACrE,oBAAoB,yBAAyB;IAC7C,qBAAqB,0BAA0B;IAC/C,oBAAoB,yBAAyB;IAC7C,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;IACjD,sBAAsB,2BAA2B;IACjD,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;IAC3C,uBAAuB,4BAA4B;IACnD,qBAAqB,0BAA0B;IAC/C,sBAAsB,2BAA2B;IACjD,eAAe,oBAAoB;IACnC,mBAAmB,wBAAwB;IAC3C,sBAAsB,2BAA2B;IACjD,gBAAgB,qBAAqB;IACrC,qBAAqB,0BAA0B;IAC/C,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,yBAAyB,8BAA8B;IACvD,yBAAyB,8BAA8B;IACvD,wBAAwB,6BAA6B;IACrD,uCAAuC,4CAA4C;IACnF,qBAAqB,0BAA0B;IAC/C,uBAAuB,4BAA4B;IACnD,aAAa,kBAAkB;IAC/B,wBAAwB,6BAA6B;IACrD,8BAA8B,mCAAmC;IACjE,kBAAkB,uBAAuB;IACzC,qBAAqB,0BAA0B;IAC/C,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IACzB,oBAAoB,yBAAyB;IAC7C,oBAAoB,yBAAyB;IAC7C,sBAAsB,2BAA2B;IACjD,oBAAoB,yBAAyB;IAC7C,iBAAiB,sBAAsB;IACvC,wBAAwB,6BAA6B;IACrD,wBAAwB,6BAA6B;IACrD,qBAAqB,0BAA0B;IAC/C,gBAAgB,qBAAqB;IACrC,mBAAmB,wBAAwB;IAC3C,uBAAuB,4BAA4B;IACnD,sBAAsB,2BAA2B;IACjD,yBAAyB,8BAA8B;IACvD,yBAAyB,8BAA8B;IACvD,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;IAC3C,kBAAkB,uBAAuB;IACzC,kBAAkB,uBAAuB;IACzC,qBAAqB,0BAA0B;CAChD"}
@@ -71,5 +71,6 @@ export var codes;
71
71
  codes["ERR_NOT_IMPLEMENTED"] = "ERR_NOT_IMPLEMENTED";
72
72
  codes["ERR_WRONG_PING_ACK"] = "ERR_WRONG_PING_ACK";
73
73
  codes["ERR_INVALID_RECORD"] = "ERR_INVALID_RECORD";
74
+ codes["ERR_ALREADY_SUCCEEDED"] = "ERR_ALREADY_SUCCEEDED";
74
75
  })(codes || (codes = {}));
75
76
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAQX;AARD,WAAY,QAAQ;IAClB,kEAAsD,CAAA;IACtD,iDAAqC,CAAA;IACrC,uDAA2C,CAAA;IAC3C,8FAAkF,CAAA;IAClF,iFAAqE,CAAA;IACrE,iGAAqF,CAAA;IACrF,mCAAuB,CAAA;AACzB,CAAC,EARW,QAAQ,KAAR,QAAQ,QAQnB;AAED,MAAM,CAAN,IAAY,KA8DX;AA9DD,WAAY,KAAK;IACf,0CAAiC,CAAA;IACjC,oDAA2C,CAAA;IAC3C,sDAA6C,CAAA;IAC7C,gDAAuC,CAAA;IACvC,kEAAyD,CAAA;IACzD,4DAAmD,CAAA;IACnD,0DAAiD,CAAA;IACjD,gEAAuD,CAAA;IACvD,kEAAyD,CAAA;IACzD,8EAAqE,CAAA;IACrE,sDAA6C,CAAA;IAC7C,wDAA+C,CAAA;IAC/C,sDAA6C,CAAA;IAC7C,oDAA2C,CAAA;IAC3C,0DAAiD,CAAA;IACjD,0DAAiD,CAAA;IACjD,8CAAqC,CAAA;IACrC,4CAAmC,CAAA;IACnC,oDAA2C,CAAA;IAC3C,4DAAmD,CAAA;IACnD,wDAA+C,CAAA;IAC/C,0DAAiD,CAAA;IACjD,4CAAmC,CAAA;IACnC,oDAA2C,CAAA;IAC3C,0DAAiD,CAAA;IACjD,8CAAqC,CAAA;IACrC,wDAA+C,CAAA;IAC/C,wCAA+B,CAAA;IAC/B,oCAA2B,CAAA;IAC3B,gEAAuD,CAAA;IACvD,gEAAuD,CAAA;IACvD,8DAAqD,CAAA;IACrD,4FAAmF,CAAA;IACnF,wDAA+C,CAAA;IAC/C,4DAAmD,CAAA;IACnD,wCAA+B,CAAA;IAC/B,8DAAqD,CAAA;IACrD,0EAAiE,CAAA;IACjE,kDAAyC,CAAA;IACzC,wDAA+C,CAAA;IAC/C,4CAAmC,CAAA;IACnC,8CAAqC,CAAA;IACrC,kCAAyB,CAAA;IACzB,sDAA6C,CAAA;IAC7C,sDAA6C,CAAA;IAC7C,0DAAiD,CAAA;IACjD,sDAA6C,CAAA;IAC7C,gDAAuC,CAAA;IACvC,8DAAqD,CAAA;IACrD,8DAAqD,CAAA;IACrD,wDAA+C,CAAA;IAC/C,8CAAqC,CAAA;IACrC,oDAA2C,CAAA;IAC3C,4DAAmD,CAAA;IACnD,0DAAiD,CAAA;IACjD,gEAAuD,CAAA;IACvD,gEAAuD,CAAA;IACvD,4DAAmD,CAAA;IACnD,oDAA2C,CAAA;IAC3C,kDAAyC,CAAA;IACzC,kDAAyC,CAAA;AAC3C,CAAC,EA9DW,KAAK,KAAL,KAAK,QA8DhB"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,QAQX;AARD,WAAY,QAAQ;IAClB,kEAAsD,CAAA;IACtD,iDAAqC,CAAA;IACrC,uDAA2C,CAAA;IAC3C,8FAAkF,CAAA;IAClF,iFAAqE,CAAA;IACrE,iGAAqF,CAAA;IACrF,mCAAuB,CAAA;AACzB,CAAC,EARW,QAAQ,KAAR,QAAQ,QAQnB;AAED,MAAM,CAAN,IAAY,KA+DX;AA/DD,WAAY,KAAK;IACf,0CAAiC,CAAA;IACjC,oDAA2C,CAAA;IAC3C,sDAA6C,CAAA;IAC7C,gDAAuC,CAAA;IACvC,kEAAyD,CAAA;IACzD,4DAAmD,CAAA;IACnD,0DAAiD,CAAA;IACjD,gEAAuD,CAAA;IACvD,kEAAyD,CAAA;IACzD,8EAAqE,CAAA;IACrE,sDAA6C,CAAA;IAC7C,wDAA+C,CAAA;IAC/C,sDAA6C,CAAA;IAC7C,oDAA2C,CAAA;IAC3C,0DAAiD,CAAA;IACjD,0DAAiD,CAAA;IACjD,8CAAqC,CAAA;IACrC,4CAAmC,CAAA;IACnC,oDAA2C,CAAA;IAC3C,4DAAmD,CAAA;IACnD,wDAA+C,CAAA;IAC/C,0DAAiD,CAAA;IACjD,4CAAmC,CAAA;IACnC,oDAA2C,CAAA;IAC3C,0DAAiD,CAAA;IACjD,8CAAqC,CAAA;IACrC,wDAA+C,CAAA;IAC/C,wCAA+B,CAAA;IAC/B,oCAA2B,CAAA;IAC3B,gEAAuD,CAAA;IACvD,gEAAuD,CAAA;IACvD,8DAAqD,CAAA;IACrD,4FAAmF,CAAA;IACnF,wDAA+C,CAAA;IAC/C,4DAAmD,CAAA;IACnD,wCAA+B,CAAA;IAC/B,8DAAqD,CAAA;IACrD,0EAAiE,CAAA;IACjE,kDAAyC,CAAA;IACzC,wDAA+C,CAAA;IAC/C,4CAAmC,CAAA;IACnC,8CAAqC,CAAA;IACrC,kCAAyB,CAAA;IACzB,sDAA6C,CAAA;IAC7C,sDAA6C,CAAA;IAC7C,0DAAiD,CAAA;IACjD,sDAA6C,CAAA;IAC7C,gDAAuC,CAAA;IACvC,8DAAqD,CAAA;IACrD,8DAAqD,CAAA;IACrD,wDAA+C,CAAA;IAC/C,8CAAqC,CAAA;IACrC,oDAA2C,CAAA;IAC3C,4DAAmD,CAAA;IACnD,0DAAiD,CAAA;IACjD,gEAAuD,CAAA;IACvD,gEAAuD,CAAA;IACvD,4DAAmD,CAAA;IACnD,oDAA2C,CAAA;IAC3C,kDAAyC,CAAA;IACzC,kDAAyC,CAAA;IACzC,wDAA+C,CAAA;AACjD,CAAC,EA/DW,KAAK,KAAL,KAAK,QA+DhB"}
@@ -50,10 +50,13 @@ export declare class NatManager implements Startable {
50
50
  private client?;
51
51
  constructor(components: Components, init: NatManagerInit);
52
52
  isStarted(): boolean;
53
+ start(): void;
53
54
  /**
54
- * Starts the NAT manager
55
+ * Attempt to use uPnP to configure port mapping using the current gateway.
56
+ *
57
+ * Run after start to ensure the transport manager has all addresses configured.
55
58
  */
56
- start(): void;
59
+ afterStart(): void;
57
60
  _start(): Promise<void>;
58
61
  _getClient(): Promise<NatAPI>;
59
62
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"nat-manager.d.ts","sourceRoot":"","sources":["../../src/nat-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAS9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAS/D,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAA;IAEhB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,UAAW,YAAW,SAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAQ;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAQ;gBAEV,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc;IAiBzD,SAAS;IAIT;;OAEG;IACH,KAAK;IAcC,MAAM;IAkDN,UAAU;IAehB;;OAEG;IACG,IAAI;CAYX"}
1
+ {"version":3,"file":"nat-manager.d.ts","sourceRoot":"","sources":["../../src/nat-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAS9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAA;AAS/D,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAA;IAEhB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,UAAW,YAAW,SAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAQ;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAQ;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAQ;gBAEV,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc;IAiBzD,SAAS;IAIT,KAAK;IAEL;;;;OAIG;IACH,UAAU;IAcJ,MAAM;IAkDN,UAAU;IAehB;;OAEG;IACG,IAAI;CAYX"}
@@ -30,16 +30,19 @@ export class NatManager {
30
30
  isStarted() {
31
31
  return this.started;
32
32
  }
33
+ start() { }
33
34
  /**
34
- * Starts the NAT manager
35
+ * Attempt to use uPnP to configure port mapping using the current gateway.
36
+ *
37
+ * Run after start to ensure the transport manager has all addresses configured.
35
38
  */
36
- start() {
39
+ afterStart() {
37
40
  if (isBrowser || !this.enabled || this.started) {
38
41
  return;
39
42
  }
40
43
  this.started = true;
41
44
  // done async to not slow down startup
42
- this._start().catch((err) => {
45
+ void this._start().catch((err) => {
43
46
  // hole punching errors are non-fatal
44
47
  log.error(err);
45
48
  });
@@ -1 +1 @@
1
- {"version":3,"file":"nat-manager.js","sourceRoot":"","sources":["../../src/nat-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAU,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,WAAW,MAAM,YAAY,CAAA;AACpC,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA;AACnC,OAAO,OAAO,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAIhE,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AAChC,MAAM,WAAW,GAAG,IAAI,CAAA;AAExB,SAAS,QAAQ,CAAE,GAAG,GAAG,IAAI,EAAE,GAAG,GAAG,KAAK;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;AAC1D,CAAC;AA8CD,MAAM,OAAO,UAAU;IAYrB,YAAa,UAAsB,EAAE,IAAoB;QACvD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAE5B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAA;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;QACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAA;QAC7G,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,WAAW,CAAA;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAA;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE3B,IAAI,IAAI,CAAC,GAAG,GAAG,WAAW,EAAE;YAC1B,MAAM,OAAO,CAAC,IAAI,KAAK,CAAC,qCAAqC,WAAW,UAAU,CAAC,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;SACnH;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;YAC9C,OAAM;SACP;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;QAEnB,sCAAsC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1B,qCAAqC;YACrC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,CAAA;QAE9D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,qDAAqD;YACrD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;YAE1D,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,SAAS,KAAK,KAAK,EAAE;gBACrD,0BAA0B;gBAC1B,uCAAuC;gBACvC,SAAQ;aACT;YAED,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;gBACpB,uCAAuC;gBACvC,SAAQ;aACT;YAED,IAAI,MAAM,KAAK,CAAC,EAAE;gBAChB,cAAc;gBACd,uCAAuC;gBACvC,SAAQ;aACT;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;YACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,IAAI,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;YAElE,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,uHAAuH,CAAC,CAAA;aACpJ;YAED,MAAM,UAAU,GAAG,QAAQ,EAAE,CAAA;YAE7B,GAAG,CAAC,gCAAgC,QAAQ,IAAI,UAAU,OAAO,IAAI,IAAI,IAAI,EAAE,CAAC,CAAA;YAEhF,MAAM,MAAM,CAAC,GAAG,CAAC;gBACf,UAAU;gBACV,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;aAC5D,CAAC,CAAA;YAEF,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC;gBAC5E,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,UAAU;aACjB,EAAE,SAAS,CAAC,CAAC,CAAA;SACf;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACvB,OAAO,IAAI,CAAC,MAAM,CAAA;SACnB;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,OAAO,CAAC;YAC1B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACpC,OAAM;SACP;QAED,IAAI;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;YACzB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;SACxB;QAAC,OAAO,GAAQ,EAAE;YACjB,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;SACf;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"nat-manager.js","sourceRoot":"","sources":["../../src/nat-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "libp2p",
3
- "version": "0.37.0-1f5d5c2",
3
+ "version": "0.37.0-35f9c0c",
4
4
  "description": "JavaScript implementation of libp2p, a modular peer to peer network stack",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p#readme",
@@ -92,7 +92,7 @@
92
92
  "test:interop": "aegir test -t node -f dist/test/interop.js"
93
93
  },
94
94
  "dependencies": {
95
- "@achingbrain/nat-port-mapper": "^1.0.0",
95
+ "@achingbrain/nat-port-mapper": "^1.0.3",
96
96
  "@libp2p/connection": "^1.1.5",
97
97
  "@libp2p/crypto": "^0.22.11",
98
98
  "@libp2p/interfaces": "^1.3.31",
@@ -62,7 +62,7 @@ export class DialRequest {
62
62
  })
63
63
  }
64
64
 
65
- const dialAbortControllers = this.addrs.map(() => {
65
+ const dialAbortControllers: Array<(AbortController | undefined)> = this.addrs.map(() => {
66
66
  const controller = new AbortController()
67
67
  try {
68
68
  // fails on node < 15.4
@@ -80,16 +80,27 @@ export class DialRequest {
80
80
  }
81
81
 
82
82
  let completedDials = 0
83
+ let done = false
83
84
 
84
85
  try {
85
86
  return await Promise.any(this.addrs.map(async (addr, i) => {
86
87
  const token = await tokenHolder.shift() // get token
88
+ // End attempt once another attempt succeeded
89
+ if (done) {
90
+ this.dialer.releaseToken(tokens.splice(tokens.indexOf(token), 1)[0])
91
+ throw errCode(new Error('dialAction already succeeded'), codes.ERR_ALREADY_SUCCEEDED)
92
+ }
93
+
94
+ const controller = dialAbortControllers[i]
95
+ if (controller == null) {
96
+ throw errCode(new Error('dialAction did not come with an AbortController'), codes.ERR_INVALID_PARAMETERS)
97
+ }
87
98
  let conn
88
99
  try {
89
- const signal = dialAbortControllers[i].signal
100
+ const signal = controller.signal
90
101
  conn = await this.dialAction(addr, { ...options, signal: (options.signal != null) ? anySignal([signal, options.signal]) : signal })
91
102
  // Remove the successful AbortController so it is not aborted
92
- dialAbortControllers.splice(i, 1)
103
+ dialAbortControllers[i] = undefined
93
104
  } finally {
94
105
  completedDials++
95
106
  // If we have more or equal dials remaining than tokens, recycle the token, otherwise release it
@@ -102,10 +113,25 @@ export class DialRequest {
102
113
  }
103
114
  }
104
115
 
116
+ if (conn == null) {
117
+ // Notify Promise.any that attempt was not successful
118
+ // to prevent from returning undefined despite there
119
+ // were successful dial attempts
120
+ throw errCode(new Error('dialAction led to empty object'), codes.ERR_TRANSPORT_DIAL_FAILED)
121
+ } else {
122
+ // This dial succeeded, don't attempt anything else
123
+ done = true
124
+ }
125
+
105
126
  return conn
106
127
  }))
107
128
  } finally {
108
- dialAbortControllers.map(c => c.abort()) // success/failure happened, abort everything else
129
+ // success/failure happened, abort everything else
130
+ dialAbortControllers.forEach(c => {
131
+ if (c !== undefined) {
132
+ c.abort()
133
+ }
134
+ })
109
135
  tokens.forEach(token => this.dialer.releaseToken(token)) // release tokens back to the dialer
110
136
  }
111
137
  }
package/src/errors.ts CHANGED
@@ -69,5 +69,6 @@ export enum codes {
69
69
  ERR_INVALID_PASS_LENGTH = 'ERR_INVALID_PASS_LENGTH',
70
70
  ERR_NOT_IMPLEMENTED = 'ERR_NOT_IMPLEMENTED',
71
71
  ERR_WRONG_PING_ACK = 'ERR_WRONG_PING_ACK',
72
- ERR_INVALID_RECORD = 'ERR_INVALID_RECORD'
72
+ ERR_INVALID_RECORD = 'ERR_INVALID_RECORD',
73
+ ERR_ALREADY_SUCCEEDED = 'ERR_ALREADY_SUCCEEDED'
73
74
  }
@@ -94,10 +94,14 @@ export class NatManager implements Startable {
94
94
  return this.started
95
95
  }
96
96
 
97
+ start () {}
98
+
97
99
  /**
98
- * Starts the NAT manager
100
+ * Attempt to use uPnP to configure port mapping using the current gateway.
101
+ *
102
+ * Run after start to ensure the transport manager has all addresses configured.
99
103
  */
100
- start () {
104
+ afterStart () {
101
105
  if (isBrowser || !this.enabled || this.started) {
102
106
  return
103
107
  }
@@ -105,7 +109,7 @@ export class NatManager implements Startable {
105
109
  this.started = true
106
110
 
107
111
  // done async to not slow down startup
108
- this._start().catch((err) => {
112
+ void this._start().catch((err) => {
109
113
  // hole punching errors are non-fatal
110
114
  log.error(err)
111
115
  })