@libp2p/circuit-relay-v2 1.1.5-50b897139 → 1.1.5-5214dec4a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +4 -5
- package/dist/src/constants.d.ts +0 -4
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +0 -4
- package/dist/src/constants.js.map +1 -1
- package/dist/src/errors.d.ts +13 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +19 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/pb/index.d.ts.map +1 -1
- package/dist/src/pb/index.js +3 -3
- package/dist/src/pb/index.js.map +1 -1
- package/dist/src/server/index.d.ts +2 -1
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +9 -6
- package/dist/src/server/index.js.map +1 -1
- package/dist/src/server/reservation-voucher.js +2 -2
- package/dist/src/server/reservation-voucher.js.map +1 -1
- package/dist/src/transport/listener.js +2 -2
- package/dist/src/transport/listener.js.map +1 -1
- package/dist/src/transport/reservation-store.js +2 -2
- package/dist/src/transport/reservation-store.js.map +1 -1
- package/dist/src/transport/transport.d.ts.map +1 -1
- package/dist/src/transport/transport.js +21 -13
- package/dist/src/transport/transport.js.map +1 -1
- package/dist/src/utils.d.ts +9 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +50 -5
- package/dist/src/utils.js.map +1 -1
- package/package.json +8 -11
- package/src/constants.ts +0 -5
- package/src/errors.ts +19 -0
- package/src/pb/index.ts +3 -3
- package/src/server/index.ts +11 -7
- package/src/server/reservation-voucher.ts +2 -2
- package/src/transport/listener.ts +2 -2
- package/src/transport/reservation-store.ts +2 -2
- package/src/transport/transport.ts +23 -13
- package/src/utils.ts +66 -6
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/transport/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACrH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,mCAAmC,EAAE,6BAA6B,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAC5N,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAOzD,MAAM,WAAW,GAAG,CAAC,OAAoB,EAAoC,EAAE;IAC7E,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAYD,MAAM,QAAQ,GAAG;IACf,qBAAqB,EAAE,eAAe;IACtC,sBAAsB,EAAE,eAAe;IACvC,WAAW,EAAE,KAAK;CACnB,CAAA;AAWD,MAAM,OAAO,qBAAqB;IACf,SAAS,CAAiB;IAC1B,SAAS,CAAW;IACpB,SAAS,CAAW;IACpB,iBAAiB,CAAmB;IACpC,gBAAgB,CAAkB;IAClC,MAAM,CAAQ;IACd,QAAQ,CAAU;IAClB,cAAc,CAAgB;IAC9B,eAAe,CAAiB;IACjC,gBAAgB,CAAkB;IACjC,MAAM,CAAiB;IACvB,qBAAqB,CAAQ;IAC7B,sBAAsB,CAAS;IAC/B,WAAW,CAAQ;IAC5B,OAAO,CAAS;IACP,GAAG,CAAQ;IAE5B,YAAa,UAA2C,EAAE,IAA+B;QACvF,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,gCAAgC,CAAC,CAAA;QAC3E,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;QACrC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAA;QACrC,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAA;QACrD,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAA;QACnD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAC/B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAC/B,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;QACnC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAA;QAC/C,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAA;QACjD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,IAAI,QAAQ,CAAC,qBAAqB,CAAA;QACzF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,IAAI,QAAQ,CAAC,sBAAsB,CAAA;QAC5F,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAA;QAE3D,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,CAAA;QAE/C,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,UAAU,EAAE;gBAC9C,MAAM,EAAE,IAAI,CAAC,eAAe,IAAI,UAAU,CAAC,6BAA6B,EAAE,mCAAmC,CAAC;aAC/G,CAAC,CAAA;YACF,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;qBACrD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACX,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBACtE,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAC9D,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACrE,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,CAAA;QAClC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,GAAG,EAAE;YACvE,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,IAAI,cAAc,EAAE,CAAC;gBAC/D,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE,CAAA;YACjC,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAEQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,oCAAoC,CAAA;IAE3D,CAAC,mBAAmB,CAAC,GAAa;QACzC,mBAAmB;QACnB,oCAAoC;KACrC,CAAA;IAED,IAAI,CAAC,mBAAmB,CAAC;QACvB,gDAAgD;QAChD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;YAC3B,OAAO;gBACL,kBAAkB;aACnB,CAAA;QACH,CAAC;QAED,OAAO,EAAE,CAAA;IACX,CAAC;IAEQ,CAAC,eAAe,CAAC,GAAG,IAAI,CAAA;IAEjC,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE;YACxD,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACjC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAA;gBACzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACxB,CAAC,CAAC,CAAA;QACJ,CAAC,EAAE;YACD,iBAAiB,EAAE,IAAI,CAAC,qBAAqB;YAC7C,kBAAkB,EAAE,IAAI,CAAC,sBAAsB;YAC/C,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAA;QAEF,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAElD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACjD,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAA;QAElD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAAqD;QAC9E,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7E,MAAM,MAAM,GAAG,+BAA+B,CAAA;YAC9C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAC1B,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;QAC/C,CAAC;QAED,2EAA2E;QAC3E,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;QACjD,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;QAC1D,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,EAAE,CAAA;QACrC,MAAM,aAAa,GAAG,eAAe,CAAC,SAAS,EAAE,CAAA;QAEjD,IAAI,OAAO,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC,QAAQ,EAAE,0CAA0C,CAAA;YAC/F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;YACtB,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;QAC/C,CAAC;QAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAA;QAC3C,MAAM,eAAe,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAA;QAEvD,IAAI,mBAAmB,GAAG,KAAK,CAAA;QAC/B,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;QACzE,IAAI,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAA;QAEzC,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE;gBACpC,UAAU,EAAE,CAAC,SAAS,CAAC;aACxB,CAAC,CAAA;YAEF,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,+BAA+B,CAAC,CAAC,CAAA;YAC9E,eAAe,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YACjF,mBAAmB,GAAG,IAAI,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,gCAAgC,CAAC,CAAC,CAAA;QACjF,CAAC;QAED,IAAI,MAA0B,CAAA;QAE9B,IAAI,CAAC;YACH,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,+BAA+B,CAAC,CAAC,CAAA;YAC9E,MAAM,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;YAE5D,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC;gBAC1B,MAAM;gBACN,UAAU,EAAE,eAAe;gBAC3B,eAAe;gBACf,eAAe;gBACf,SAAS;gBACT,EAAE;gBACF,mBAAmB;gBACnB,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0DAA0D,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;YAE3G,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACnB,CAAC;YACD,mBAAmB,IAAI,MAAM,eAAe,CAAC,KAAK,EAAE,CAAA;YACpD,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CACb,EACE,MAAM,EAAE,UAAU,EAAE,eAAe,EACnC,eAAe,EAAE,SAAS,EAAE,EAAE,EAC9B,mBAAmB,EACnB,UAAU,EACK;QAEjB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;YAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;YAEnC,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,qCAAqC,CAAC,CAAC,CAAA;YAC5E,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO;gBAC7B,IAAI,EAAE;oBACJ,EAAE,EAAE,eAAe,CAAC,OAAO,EAAE;oBAC7B,KAAK,EAAE,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;iBAC1C;aACF,CAAC,CAAA;YAEF,UAAU,EAAE,CAAC,IAAI,mBAAmB,CAAC,qCAAqC,CAAC,CAAC,CAAA;YAC5E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAElC,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CAAC,2CAA2C,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,WAAW,EAAE,EAAE,sBAAsB,CAAC,CAAA;YACrI,CAAC;YAED,MAAM,MAAM,GAAG,oBAAoB,CAAC;gBAClC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;gBACtB,UAAU,EAAE,EAAE;gBACd,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC9E,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAA;YAEF,IAAI,CAAC,GAAG,CAAC,oCAAoC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;YACjE,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE;gBACjD,SAAS,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;gBAC/B,UAAU;aACX,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,qCAAqC,eAAe,CAAC,QAAQ,EAAE,cAAc,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;YAC3I,mBAAmB,IAAI,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;YAC/C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc,CAAE,OAA8B;QAC5C,OAAO,cAAc,CAAC;YACpB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,UAAU,EAAE,IAAI,CAAC,gBAAgB;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,YAAY,CAAE,UAAuB;QACnC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;QAElE,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE;YAC9B,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAE,UAAuB;QACjC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAE,EAAE,UAAU,EAAE,MAAM,EAAsB;QACtD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,0FAA0F,CAAC,CAAA;gBACpG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;YACzF,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,mGAAmG;gBACnG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uFAAuF,EAAE,GAAG,CAAC,CAAA;YAC9G,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAA;QAC9C,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;YAC/B,MAAM;SACP,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,uDAAuD,EAAE,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;QAEtG,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gEAAgE,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;YACvG,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE;gBACrF,MAAM;aACP,CAAC,CAAA;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACpB,OAAM;QACR,CAAC;QAED,mDAAmD;QACnD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;YACjF,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,kBAAkB,EAAE,EAAE;gBACtF,MAAM;aACP,CAAC,CAAA;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACpB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;YACjF,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE;gBACrF,MAAM;aACP,CAAC,CAAA;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACpB,OAAM;QACR,CAAC;QAED,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAErD,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9G,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,4DAA4D,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;YACnG,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE;gBACrF,MAAM;aACP,CAAC,CAAA;YACF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACpB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAA;QACvE,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE;YACtE,MAAM;SACP,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,oBAAoB,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACnG,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAA;QACvD,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;YAC/B,UAAU;YACV,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAA;QAEF,IAAI,CAAC,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;QAChE,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE;YACzC,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;SACjC,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IACrE,CAAC;CACF"}
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/transport/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/src/utils.d.ts
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
import { CID } from 'multiformats/cid';
|
2
2
|
import type { Limit } from './pb/index.js';
|
3
|
-
import type { LoggerOptions, Stream } from '@libp2p/interface';
|
3
|
+
import type { ConnectionLimits, LoggerOptions, Stream } from '@libp2p/interface';
|
4
|
+
import type { Uint8ArrayList } from 'uint8arraylist';
|
4
5
|
export declare function createLimitedRelay(src: Stream, dst: Stream, abortSignal: AbortSignal, limit: Limit | undefined, options: LoggerOptions): void;
|
5
6
|
/**
|
6
7
|
* Convert a namespace string into a cid
|
@@ -10,4 +11,11 @@ export declare function namespaceToCid(namespace: string): Promise<CID>;
|
|
10
11
|
* returns number of ms between now and expiration time
|
11
12
|
*/
|
12
13
|
export declare function getExpirationMilliseconds(expireTimeSeconds: bigint): number;
|
14
|
+
export declare class LimitTracker {
|
15
|
+
private readonly expires?;
|
16
|
+
private bytes?;
|
17
|
+
constructor(limits?: Limit);
|
18
|
+
onData(buf: Uint8ArrayList | Uint8Array): void;
|
19
|
+
getLimits(): ConnectionLimits | undefined;
|
20
|
+
}
|
13
21
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/src/utils.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAGtC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAEhF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AA6BpD,wBAAgB,kBAAkB,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAoE9I;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAKrE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAE,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAQ;IACjC,OAAO,CAAC,KAAK,CAAC,CAAQ;gBAET,MAAM,CAAC,EAAE,KAAK;IAc3B,MAAM,CAAE,GAAG,EAAE,cAAc,GAAG,UAAU,GAAG,IAAI;IAY/C,SAAS,IAAK,gBAAgB,GAAG,SAAS;CA6B3C"}
|
package/dist/src/utils.js
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
import { CodeError } from '@libp2p/interface';
|
2
1
|
import { anySignal } from 'any-signal';
|
3
2
|
import { CID } from 'multiformats/cid';
|
4
3
|
import { sha256 } from 'multiformats/hashes/sha2';
|
5
|
-
import {
|
4
|
+
import { DurationLimitError, TransferLimitError } from './errors.js';
|
6
5
|
async function* countStreamBytes(source, limit, options) {
|
7
6
|
const limitBytes = limit.remaining;
|
8
7
|
for await (const buf of source) {
|
@@ -19,7 +18,7 @@ async function* countStreamBytes(source, limit, options) {
|
|
19
18
|
catch (err) {
|
20
19
|
options.log.error(err);
|
21
20
|
}
|
22
|
-
throw new
|
21
|
+
throw new TransferLimitError(`data limit of ${limitBytes} bytes exceeded`);
|
23
22
|
}
|
24
23
|
limit.remaining -= len;
|
25
24
|
yield buf;
|
@@ -45,7 +44,7 @@ export function createLimitedRelay(src, dst, abortSignal, limit, options) {
|
|
45
44
|
}
|
46
45
|
queueMicrotask(() => {
|
47
46
|
const onAbort = () => {
|
48
|
-
dst.abort(new
|
47
|
+
dst.abort(new DurationLimitError(`duration limit of ${limit?.duration} ms exceeded`));
|
49
48
|
};
|
50
49
|
signal.addEventListener('abort', onAbort, { once: true });
|
51
50
|
void dst.sink(dataLimit == null ? src.source : countStreamBytes(src.source, dataLimit, options))
|
@@ -63,7 +62,7 @@ export function createLimitedRelay(src, dst, abortSignal, limit, options) {
|
|
63
62
|
});
|
64
63
|
queueMicrotask(() => {
|
65
64
|
const onAbort = () => {
|
66
|
-
src.abort(new
|
65
|
+
src.abort(new DurationLimitError(`duration limit of ${limit?.duration} ms exceeded`));
|
67
66
|
};
|
68
67
|
signal.addEventListener('abort', onAbort, { once: true });
|
69
68
|
void src.sink(dataLimit == null ? dst.source : countStreamBytes(dst.source, dataLimit, options))
|
@@ -97,4 +96,50 @@ export function getExpirationMilliseconds(expireTimeSeconds) {
|
|
97
96
|
// downcast to number to use with setTimeout
|
98
97
|
return Number(expireTimeMillis - BigInt(currentTime));
|
99
98
|
}
|
99
|
+
export class LimitTracker {
|
100
|
+
expires;
|
101
|
+
bytes;
|
102
|
+
constructor(limits) {
|
103
|
+
if (limits?.duration != null && limits?.duration !== 0) {
|
104
|
+
this.expires = Date.now() + (limits.duration * 1000);
|
105
|
+
}
|
106
|
+
this.bytes = limits?.data;
|
107
|
+
if (this.bytes === 0n) {
|
108
|
+
this.bytes = undefined;
|
109
|
+
}
|
110
|
+
this.onData = this.onData.bind(this);
|
111
|
+
}
|
112
|
+
onData(buf) {
|
113
|
+
if (this.bytes == null) {
|
114
|
+
return;
|
115
|
+
}
|
116
|
+
this.bytes -= BigInt(buf.byteLength);
|
117
|
+
if (this.bytes < 0n) {
|
118
|
+
this.bytes = 0n;
|
119
|
+
}
|
120
|
+
}
|
121
|
+
getLimits() {
|
122
|
+
if (this.expires == null && this.bytes == null) {
|
123
|
+
return;
|
124
|
+
}
|
125
|
+
const output = {};
|
126
|
+
if (this.bytes != null) {
|
127
|
+
const self = this;
|
128
|
+
Object.defineProperty(output, 'bytes', {
|
129
|
+
get() {
|
130
|
+
return self.bytes;
|
131
|
+
}
|
132
|
+
});
|
133
|
+
}
|
134
|
+
if (this.expires != null) {
|
135
|
+
const self = this;
|
136
|
+
Object.defineProperty(output, 'seconds', {
|
137
|
+
get() {
|
138
|
+
return Math.round(((self.expires ?? 0) - Date.now()) / 1000);
|
139
|
+
}
|
140
|
+
});
|
141
|
+
}
|
142
|
+
return output;
|
143
|
+
}
|
144
|
+
}
|
100
145
|
//# sourceMappingURL=utils.js.map
|
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,SAAS,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/circuit-relay-v2",
|
3
|
-
"version": "1.1.5-
|
3
|
+
"version": "1.1.5-5214dec4a",
|
4
4
|
"description": "Implementation of Circuit Relay v2",
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-circuit-relay-v2#readme",
|
@@ -52,12 +52,12 @@
|
|
52
52
|
"doc-check": "aegir doc-check"
|
53
53
|
},
|
54
54
|
"dependencies": {
|
55
|
-
"@libp2p/interface": "1.7.0-
|
56
|
-
"@libp2p/interface-internal": "1.3.4-
|
57
|
-
"@libp2p/peer-collections": "5.2.9-
|
58
|
-
"@libp2p/peer-id": "4.2.4-
|
59
|
-
"@libp2p/peer-record": "7.0.25-
|
60
|
-
"@libp2p/utils": "5.4.9-
|
55
|
+
"@libp2p/interface": "1.7.0-5214dec4a",
|
56
|
+
"@libp2p/interface-internal": "1.3.4-5214dec4a",
|
57
|
+
"@libp2p/peer-collections": "5.2.9-5214dec4a",
|
58
|
+
"@libp2p/peer-id": "4.2.4-5214dec4a",
|
59
|
+
"@libp2p/peer-record": "7.0.25-5214dec4a",
|
60
|
+
"@libp2p/utils": "5.4.9-5214dec4a",
|
61
61
|
"@multiformats/mafmt": "^12.1.6",
|
62
62
|
"@multiformats/multiaddr": "^12.2.3",
|
63
63
|
"any-signal": "^4.1.1",
|
@@ -72,13 +72,10 @@
|
|
72
72
|
"uint8arrays": "^5.1.0"
|
73
73
|
},
|
74
74
|
"devDependencies": {
|
75
|
-
"@libp2p/interface-compliance-tests": "5.4.12-
|
76
|
-
"@libp2p/logger": "4.0.20-50b897139",
|
77
|
-
"@libp2p/peer-id-factory": "4.2.4-50b897139",
|
75
|
+
"@libp2p/interface-compliance-tests": "5.4.12-5214dec4a",
|
78
76
|
"aegir": "^44.0.1",
|
79
77
|
"delay": "^6.0.0",
|
80
78
|
"it-drain": "^3.0.7",
|
81
|
-
"it-pair": "^2.0.6",
|
82
79
|
"it-pushable": "^3.2.3",
|
83
80
|
"it-to-buffer": "^4.0.7",
|
84
81
|
"p-wait-for": "^5.0.2",
|
package/src/constants.ts
CHANGED
@@ -71,10 +71,5 @@ export const DEFAULT_ADVERT_BOOT_DELAY = 30 * second
|
|
71
71
|
|
72
72
|
export const MAX_CONNECTIONS = 300
|
73
73
|
|
74
|
-
export const ERR_NO_ROUTERS_AVAILABLE = 'ERR_NO_ROUTERS_AVAILABLE'
|
75
|
-
export const ERR_RELAYED_DIAL = 'ERR_RELAYED_DIAL'
|
76
|
-
export const ERR_HOP_REQUEST_FAILED = 'ERR_HOP_REQUEST_FAILED'
|
77
|
-
export const ERR_TRANSFER_LIMIT_EXCEEDED = 'ERR_TRANSFER_LIMIT_EXCEEDED'
|
78
|
-
|
79
74
|
export const DEFAULT_DISCOVERY_FILTER_SIZE = 4096
|
80
75
|
export const DEFAULT_DISCOVERY_FILTER_ERROR_RATE = 0.001
|
package/src/errors.ts
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
/**
|
2
|
+
* A transfer limit was hit
|
3
|
+
*/
|
4
|
+
export class TransferLimitError extends Error {
|
5
|
+
constructor (message = 'Transfer limit error') {
|
6
|
+
super(message)
|
7
|
+
this.name = 'TransferLimitError'
|
8
|
+
}
|
9
|
+
}
|
10
|
+
|
11
|
+
/**
|
12
|
+
* A duration limit was hit
|
13
|
+
*/
|
14
|
+
export class DurationLimitError extends Error {
|
15
|
+
constructor (message = 'Duration limit error') {
|
16
|
+
super(message)
|
17
|
+
this.name = 'DurationLimitError'
|
18
|
+
}
|
19
|
+
}
|
package/src/pb/index.ts
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-unnecessary-boolean-literal-compare */
|
5
5
|
/* eslint-disable @typescript-eslint/no-empty-interface */
|
6
6
|
|
7
|
-
import { type Codec,
|
7
|
+
import { type Codec, decodeMessage, type DecodeOptions, encodeMessage, enumeration, MaxLengthError, message } from 'protons-runtime'
|
8
8
|
import { alloc as uint8ArrayAlloc } from 'uint8arrays/alloc'
|
9
9
|
import type { Uint8ArrayList } from 'uint8arraylist'
|
10
10
|
|
@@ -286,7 +286,7 @@ export namespace Peer {
|
|
286
286
|
}
|
287
287
|
case 2: {
|
288
288
|
if (opts.limits?.addrs != null && obj.addrs.length === opts.limits.addrs) {
|
289
|
-
throw new
|
289
|
+
throw new MaxLengthError('Decode error - map field "addrs" had too many elements')
|
290
290
|
}
|
291
291
|
|
292
292
|
obj.addrs.push(reader.bytes())
|
@@ -369,7 +369,7 @@ export namespace Reservation {
|
|
369
369
|
}
|
370
370
|
case 2: {
|
371
371
|
if (opts.limits?.addrs != null && obj.addrs.length === opts.limits.addrs) {
|
372
|
-
throw new
|
372
|
+
throw new MaxLengthError('Decode error - map field "addrs" had too many elements')
|
373
373
|
}
|
374
374
|
|
375
375
|
obj.addrs.push(reader.bytes())
|
package/src/server/index.ts
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
import { TypedEventEmitter, setMaxListeners } from '@libp2p/interface'
|
2
|
-
import {
|
2
|
+
import { peerIdFromMultihash } from '@libp2p/peer-id'
|
3
3
|
import { RecordEnvelope } from '@libp2p/peer-record'
|
4
4
|
import { type Multiaddr, multiaddr } from '@multiformats/multiaddr'
|
5
5
|
import { pbStream, type ProtobufStream } from 'it-protobuf-stream'
|
6
|
+
import * as Digest from 'multiformats/hashes/digest'
|
6
7
|
import pDefer from 'p-defer'
|
7
8
|
import {
|
8
9
|
CIRCUIT_PROTO_CODE,
|
@@ -17,7 +18,7 @@ import { createLimitedRelay } from '../utils.js'
|
|
17
18
|
import { ReservationStore, type ReservationStoreInit } from './reservation-store.js'
|
18
19
|
import { ReservationVoucherRecord } from './reservation-voucher.js'
|
19
20
|
import type { CircuitRelayService, RelayReservation } from '../index.js'
|
20
|
-
import type { ComponentLogger, Logger, Connection, Stream, ConnectionGater, PeerId, PeerStore, Startable } from '@libp2p/interface'
|
21
|
+
import type { ComponentLogger, Logger, Connection, Stream, ConnectionGater, PeerId, PeerStore, Startable, PrivateKey } from '@libp2p/interface'
|
21
22
|
import type { AddressManager, ConnectionManager, IncomingStreamData, Registrar } from '@libp2p/interface-internal'
|
22
23
|
import type { PeerMap } from '@libp2p/peer-collections'
|
23
24
|
|
@@ -68,6 +69,7 @@ export interface CircuitRelayServerComponents {
|
|
68
69
|
peerStore: PeerStore
|
69
70
|
addressManager: AddressManager
|
70
71
|
peerId: PeerId
|
72
|
+
privateKey: PrivateKey
|
71
73
|
connectionManager: ConnectionManager
|
72
74
|
connectionGater: ConnectionGater
|
73
75
|
logger: ComponentLogger
|
@@ -88,6 +90,7 @@ class CircuitRelayServer extends TypedEventEmitter<RelayServerEvents> implements
|
|
88
90
|
private readonly peerStore: PeerStore
|
89
91
|
private readonly addressManager: AddressManager
|
90
92
|
private readonly peerId: PeerId
|
93
|
+
private readonly privateKey: PrivateKey
|
91
94
|
private readonly connectionManager: ConnectionManager
|
92
95
|
private readonly connectionGater: ConnectionGater
|
93
96
|
private readonly reservationStore: ReservationStore
|
@@ -110,6 +113,7 @@ class CircuitRelayServer extends TypedEventEmitter<RelayServerEvents> implements
|
|
110
113
|
this.peerStore = components.peerStore
|
111
114
|
this.addressManager = components.addressManager
|
112
115
|
this.peerId = components.peerId
|
116
|
+
this.privateKey = components.privateKey
|
113
117
|
this.connectionManager = components.connectionManager
|
114
118
|
this.connectionGater = components.connectionGater
|
115
119
|
this.started = false
|
@@ -144,7 +148,7 @@ class CircuitRelayServer extends TypedEventEmitter<RelayServerEvents> implements
|
|
144
148
|
}, {
|
145
149
|
maxInboundStreams: this.maxInboundHopStreams,
|
146
150
|
maxOutboundStreams: this.maxOutboundHopStreams,
|
147
|
-
|
151
|
+
runOnLimitedConnection: true
|
148
152
|
})
|
149
153
|
|
150
154
|
this.reservationStore.start()
|
@@ -282,7 +286,7 @@ class CircuitRelayServer extends TypedEventEmitter<RelayServerEvents> implements
|
|
282
286
|
peer: remotePeer,
|
283
287
|
relay: this.peerId,
|
284
288
|
expiration: Number(expire)
|
285
|
-
}), this.
|
289
|
+
}), this.privateKey)
|
286
290
|
|
287
291
|
return {
|
288
292
|
addrs,
|
@@ -311,7 +315,7 @@ class CircuitRelayServer extends TypedEventEmitter<RelayServerEvents> implements
|
|
311
315
|
}
|
312
316
|
|
313
317
|
request.peer.addrs.forEach(multiaddr)
|
314
|
-
dstPeer =
|
318
|
+
dstPeer = peerIdFromMultihash(Digest.decode(request.peer.id))
|
315
319
|
} catch (err) {
|
316
320
|
this.log.error('invalid hop connect request via peer %p %s', connection.remotePeer, err)
|
317
321
|
await hopstr.write({ type: HopMessage.Type.STATUS, status: Status.MALFORMED_MESSAGE })
|
@@ -346,7 +350,7 @@ class CircuitRelayServer extends TypedEventEmitter<RelayServerEvents> implements
|
|
346
350
|
request: {
|
347
351
|
type: StopMessage.Type.CONNECT,
|
348
352
|
peer: {
|
349
|
-
id: connection.remotePeer.
|
353
|
+
id: connection.remotePeer.toMultihash().bytes,
|
350
354
|
addrs: []
|
351
355
|
},
|
352
356
|
limit
|
@@ -383,7 +387,7 @@ class CircuitRelayServer extends TypedEventEmitter<RelayServerEvents> implements
|
|
383
387
|
this.log('starting circuit relay v2 stop request to %s', connection.remotePeer)
|
384
388
|
const stream = await connection.newStream([RELAY_V2_STOP_CODEC], {
|
385
389
|
maxOutboundStreams: this.maxOutboundStopStreams,
|
386
|
-
|
390
|
+
runOnLimitedConnection: true
|
387
391
|
})
|
388
392
|
const pbstr = pbStream(stream)
|
389
393
|
const stopstr = pbstr.pb(StopMessage)
|
@@ -23,8 +23,8 @@ export class ReservationVoucherRecord implements Record {
|
|
23
23
|
|
24
24
|
marshal (): Uint8Array {
|
25
25
|
return ReservationVoucher.encode({
|
26
|
-
relay: this.relay.
|
27
|
-
peer: this.peer.
|
26
|
+
relay: this.relay.toMultihash().bytes,
|
27
|
+
peer: this.peer.toMultihash().bytes,
|
28
28
|
expiration: BigInt(this.expiration)
|
29
29
|
})
|
30
30
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { ListenError, TypedEventEmitter } from '@libp2p/interface'
|
2
2
|
import { PeerMap } from '@libp2p/peer-collections'
|
3
3
|
import { multiaddr } from '@multiformats/multiaddr'
|
4
4
|
import type { ReservationStore } from './reservation-store.js'
|
@@ -51,7 +51,7 @@ class CircuitRelayTransportListener extends TypedEventEmitter<ListenerEvents> im
|
|
51
51
|
const reservation = this.relayStore.getReservation(relayConn.remotePeer)
|
52
52
|
|
53
53
|
if (reservation == null) {
|
54
|
-
throw new
|
54
|
+
throw new ListenError('Did not have reservation after making reservation')
|
55
55
|
}
|
56
56
|
|
57
57
|
if (this.listeningAddrs.has(relayConn.remotePeer)) {
|
@@ -166,7 +166,7 @@ export class ReservationStore extends TypedEventEmitter<ReservationStoreEvents>
|
|
166
166
|
return
|
167
167
|
}
|
168
168
|
|
169
|
-
if (this.relayFilter.has(peerId.
|
169
|
+
if (this.relayFilter.has(peerId.toMultihash().bytes)) {
|
170
170
|
this.log('potential relay peer %p has failed previously, not trying again', peerId)
|
171
171
|
return
|
172
172
|
}
|
@@ -268,7 +268,7 @@ export class ReservationStore extends TypedEventEmitter<ReservationStoreEvents>
|
|
268
268
|
this.reservations.delete(peerId)
|
269
269
|
|
270
270
|
// don't try this peer again
|
271
|
-
this.relayFilter.add(peerId.
|
271
|
+
this.relayFilter.add(peerId.toMultihash().bytes)
|
272
272
|
}
|
273
273
|
}, {
|
274
274
|
peerId
|
@@ -1,13 +1,15 @@
|
|
1
|
-
import {
|
1
|
+
import { DialError, InvalidMessageError, serviceCapabilities, serviceDependencies, start, stop, transportSymbol } from '@libp2p/interface'
|
2
2
|
import { peerFilter } from '@libp2p/peer-collections'
|
3
|
-
import {
|
3
|
+
import { peerIdFromMultihash, peerIdFromString } from '@libp2p/peer-id'
|
4
4
|
import { streamToMaConnection } from '@libp2p/utils/stream-to-ma-conn'
|
5
5
|
import * as mafmt from '@multiformats/mafmt'
|
6
6
|
import { multiaddr } from '@multiformats/multiaddr'
|
7
7
|
import { pbStream } from 'it-protobuf-stream'
|
8
|
+
import * as Digest from 'multiformats/hashes/digest'
|
8
9
|
import { CustomProgressEvent } from 'progress-events'
|
9
|
-
import { CIRCUIT_PROTO_CODE, DEFAULT_DISCOVERY_FILTER_ERROR_RATE, DEFAULT_DISCOVERY_FILTER_SIZE,
|
10
|
+
import { CIRCUIT_PROTO_CODE, DEFAULT_DISCOVERY_FILTER_ERROR_RATE, DEFAULT_DISCOVERY_FILTER_SIZE, MAX_CONNECTIONS, RELAY_V2_HOP_CODEC, RELAY_V2_STOP_CODEC } from '../constants.js'
|
10
11
|
import { StopMessage, HopMessage, Status } from '../pb/index.js'
|
12
|
+
import { LimitTracker } from '../utils.js'
|
11
13
|
import { RelayDiscovery } from './discovery.js'
|
12
14
|
import { createListener } from './listener.js'
|
13
15
|
import { ReservationStore } from './reservation-store.js'
|
@@ -149,7 +151,7 @@ export class CircuitRelayTransport implements Transport<CircuitRelayDialEvents>
|
|
149
151
|
}, {
|
150
152
|
maxInboundStreams: this.maxInboundStopStreams,
|
151
153
|
maxOutboundStreams: this.maxOutboundStopStreams,
|
152
|
-
|
154
|
+
runOnLimitedConnection: true
|
153
155
|
})
|
154
156
|
|
155
157
|
await start(this.discovery, this.reservationStore)
|
@@ -171,7 +173,7 @@ export class CircuitRelayTransport implements Transport<CircuitRelayDialEvents>
|
|
171
173
|
if (ma.protoCodes().filter(code => code === CIRCUIT_PROTO_CODE).length !== 1) {
|
172
174
|
const errMsg = 'Invalid circuit relay address'
|
173
175
|
this.log.error(errMsg, ma)
|
174
|
-
throw new
|
176
|
+
throw new DialError(errMsg)
|
175
177
|
}
|
176
178
|
|
177
179
|
// Check the multiaddr to see if it contains a relay and a destination peer
|
@@ -184,7 +186,7 @@ export class CircuitRelayTransport implements Transport<CircuitRelayDialEvents>
|
|
184
186
|
if (relayId == null || destinationId == null) {
|
185
187
|
const errMsg = `Circuit relay dial to ${ma.toString()} failed as address did not have peer ids`
|
186
188
|
this.log.error(errMsg)
|
187
|
-
throw new
|
189
|
+
throw new DialError(errMsg)
|
188
190
|
}
|
189
191
|
|
190
192
|
const relayPeer = peerIdFromString(relayId)
|
@@ -249,7 +251,7 @@ export class CircuitRelayTransport implements Transport<CircuitRelayDialEvents>
|
|
249
251
|
await hopstr.write({
|
250
252
|
type: HopMessage.Type.CONNECT,
|
251
253
|
peer: {
|
252
|
-
id: destinationPeer.
|
254
|
+
id: destinationPeer.toMultihash().bytes,
|
253
255
|
addrs: [multiaddr(destinationAddr).bytes]
|
254
256
|
}
|
255
257
|
})
|
@@ -258,19 +260,24 @@ export class CircuitRelayTransport implements Transport<CircuitRelayDialEvents>
|
|
258
260
|
const status = await hopstr.read()
|
259
261
|
|
260
262
|
if (status.status !== Status.OK) {
|
261
|
-
throw new
|
263
|
+
throw new InvalidMessageError(`failed to connect via relay with status ${status?.status?.toString() ?? 'undefined'}`)
|
262
264
|
}
|
263
265
|
|
266
|
+
const limits = new LimitTracker(status.limit)
|
267
|
+
|
264
268
|
const maConn = streamToMaConnection({
|
265
269
|
stream: pbstr.unwrap(),
|
266
270
|
remoteAddr: ma,
|
267
271
|
localAddr: relayAddr.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),
|
268
|
-
logger: this.logger
|
272
|
+
logger: this.logger,
|
273
|
+
onDataRead: limits.onData,
|
274
|
+
onDataWrite: limits.onData
|
269
275
|
})
|
270
276
|
|
271
277
|
this.log('new outbound relayed connection %a', maConn.remoteAddr)
|
278
|
+
|
272
279
|
return await this.upgrader.upgradeOutbound(maConn, {
|
273
|
-
|
280
|
+
limits: limits.getLimits(),
|
274
281
|
onProgress
|
275
282
|
})
|
276
283
|
} catch (err: any) {
|
@@ -359,7 +366,7 @@ export class CircuitRelayTransport implements Transport<CircuitRelayDialEvents>
|
|
359
366
|
return
|
360
367
|
}
|
361
368
|
|
362
|
-
const remotePeerId =
|
369
|
+
const remotePeerId = peerIdFromMultihash(Digest.decode(request.peer.id))
|
363
370
|
|
364
371
|
if ((await this.connectionGater.denyInboundRelayedConnection?.(connection.remotePeer, remotePeerId)) === true) {
|
365
372
|
this.log.error('connection gater denied inbound relayed connection from %p', connection.remotePeer)
|
@@ -375,18 +382,21 @@ export class CircuitRelayTransport implements Transport<CircuitRelayDialEvents>
|
|
375
382
|
signal
|
376
383
|
})
|
377
384
|
|
385
|
+
const limits = new LimitTracker(request.limit)
|
378
386
|
const remoteAddr = connection.remoteAddr.encapsulate(`/p2p-circuit/p2p/${remotePeerId.toString()}`)
|
379
387
|
const localAddr = this.addressManager.getAddresses()[0]
|
380
388
|
const maConn = streamToMaConnection({
|
381
389
|
stream: pbstr.unwrap().unwrap(),
|
382
390
|
remoteAddr,
|
383
391
|
localAddr,
|
384
|
-
logger: this.logger
|
392
|
+
logger: this.logger,
|
393
|
+
onDataRead: limits.onData,
|
394
|
+
onDataWrite: limits.onData
|
385
395
|
})
|
386
396
|
|
387
397
|
this.log('new inbound relayed connection %a', maConn.remoteAddr)
|
388
398
|
await this.upgrader.upgradeInbound(maConn, {
|
389
|
-
|
399
|
+
limits: limits.getLimits()
|
390
400
|
})
|
391
401
|
this.log('%s connection %a upgraded', 'inbound', maConn.remoteAddr)
|
392
402
|
}
|
package/src/utils.ts
CHANGED
@@ -1,10 +1,9 @@
|
|
1
|
-
import { CodeError } from '@libp2p/interface'
|
2
1
|
import { anySignal } from 'any-signal'
|
3
2
|
import { CID } from 'multiformats/cid'
|
4
3
|
import { sha256 } from 'multiformats/hashes/sha2'
|
5
|
-
import {
|
4
|
+
import { DurationLimitError, TransferLimitError } from './errors.js'
|
6
5
|
import type { Limit } from './pb/index.js'
|
7
|
-
import type { LoggerOptions, Stream } from '@libp2p/interface'
|
6
|
+
import type { ConnectionLimits, LoggerOptions, Stream } from '@libp2p/interface'
|
8
7
|
import type { Source } from 'it-stream-types'
|
9
8
|
import type { Uint8ArrayList } from 'uint8arraylist'
|
10
9
|
|
@@ -27,7 +26,7 @@ async function * countStreamBytes (source: Source<Uint8Array | Uint8ArrayList>,
|
|
27
26
|
options.log.error(err)
|
28
27
|
}
|
29
28
|
|
30
|
-
throw new
|
29
|
+
throw new TransferLimitError(`data limit of ${limitBytes} bytes exceeded`)
|
31
30
|
}
|
32
31
|
|
33
32
|
limit.remaining -= len
|
@@ -62,7 +61,7 @@ export function createLimitedRelay (src: Stream, dst: Stream, abortSignal: Abort
|
|
62
61
|
|
63
62
|
queueMicrotask(() => {
|
64
63
|
const onAbort = (): void => {
|
65
|
-
dst.abort(new
|
64
|
+
dst.abort(new DurationLimitError(`duration limit of ${limit?.duration} ms exceeded`))
|
66
65
|
}
|
67
66
|
|
68
67
|
signal.addEventListener('abort', onAbort, { once: true })
|
@@ -84,7 +83,7 @@ export function createLimitedRelay (src: Stream, dst: Stream, abortSignal: Abort
|
|
84
83
|
|
85
84
|
queueMicrotask(() => {
|
86
85
|
const onAbort = (): void => {
|
87
|
-
src.abort(new
|
86
|
+
src.abort(new DurationLimitError(`duration limit of ${limit?.duration} ms exceeded`))
|
88
87
|
}
|
89
88
|
|
90
89
|
signal.addEventListener('abort', onAbort, { once: true })
|
@@ -125,3 +124,64 @@ export function getExpirationMilliseconds (expireTimeSeconds: bigint): number {
|
|
125
124
|
// downcast to number to use with setTimeout
|
126
125
|
return Number(expireTimeMillis - BigInt(currentTime))
|
127
126
|
}
|
127
|
+
|
128
|
+
export class LimitTracker {
|
129
|
+
private readonly expires?: number
|
130
|
+
private bytes?: bigint
|
131
|
+
|
132
|
+
constructor (limits?: Limit) {
|
133
|
+
if (limits?.duration != null && limits?.duration !== 0) {
|
134
|
+
this.expires = Date.now() + (limits.duration * 1000)
|
135
|
+
}
|
136
|
+
|
137
|
+
this.bytes = limits?.data
|
138
|
+
|
139
|
+
if (this.bytes === 0n) {
|
140
|
+
this.bytes = undefined
|
141
|
+
}
|
142
|
+
|
143
|
+
this.onData = this.onData.bind(this)
|
144
|
+
}
|
145
|
+
|
146
|
+
onData (buf: Uint8ArrayList | Uint8Array): void {
|
147
|
+
if (this.bytes == null) {
|
148
|
+
return
|
149
|
+
}
|
150
|
+
|
151
|
+
this.bytes -= BigInt(buf.byteLength)
|
152
|
+
|
153
|
+
if (this.bytes < 0n) {
|
154
|
+
this.bytes = 0n
|
155
|
+
}
|
156
|
+
}
|
157
|
+
|
158
|
+
getLimits (): ConnectionLimits | undefined {
|
159
|
+
if (this.expires == null && this.bytes == null) {
|
160
|
+
return
|
161
|
+
}
|
162
|
+
|
163
|
+
const output = {}
|
164
|
+
|
165
|
+
if (this.bytes != null) {
|
166
|
+
const self = this
|
167
|
+
|
168
|
+
Object.defineProperty(output, 'bytes', {
|
169
|
+
get () {
|
170
|
+
return self.bytes
|
171
|
+
}
|
172
|
+
})
|
173
|
+
}
|
174
|
+
|
175
|
+
if (this.expires != null) {
|
176
|
+
const self = this
|
177
|
+
|
178
|
+
Object.defineProperty(output, 'seconds', {
|
179
|
+
get () {
|
180
|
+
return Math.round(((self.expires ?? 0) - Date.now()) / 1000)
|
181
|
+
}
|
182
|
+
})
|
183
|
+
}
|
184
|
+
|
185
|
+
return output
|
186
|
+
}
|
187
|
+
}
|