opcjs-base 0.1.38-alpha → 0.1.39-alpha
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.cjs +15 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -2
- package/dist/index.d.ts +6 -2
- package/dist/index.js +15 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -17870,9 +17870,13 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17870
17870
|
}
|
|
17871
17871
|
logger = getLogger("secureChannel.SecureChannelMessageDecoder");
|
|
17872
17872
|
/**
|
|
17873
|
-
* Validates that `sequenceNumber` is
|
|
17873
|
+
* Validates that `sequenceNumber` is monotonically increasing from the last
|
|
17874
17874
|
* seen remote sequence. Allows exactly one UInt32 wrap-around per token.
|
|
17875
|
-
*
|
|
17875
|
+
*
|
|
17876
|
+
* Forward gaps are tolerated with a warning because some server implementations
|
|
17877
|
+
* may consume sequence numbers internally (e.g. cancelled responses) without
|
|
17878
|
+
* sending them on the wire. Backward jumps and duplicates are rejected as
|
|
17879
|
+
* errors since they indicate replay or reordering.
|
|
17876
17880
|
*/
|
|
17877
17881
|
validateSequenceNumber(sequenceNumber, msgType, controller) {
|
|
17878
17882
|
const last = this.context.lastRemoteSequenceNumber;
|
|
@@ -17881,14 +17885,18 @@ var SecureChannelMessageDecoder = class extends TransformStream {
|
|
|
17881
17885
|
this.logger.debug(`[${msgType}] Sequence number initialized to ${sequenceNumber}`);
|
|
17882
17886
|
return true;
|
|
17883
17887
|
}
|
|
17884
|
-
const isIncrement = sequenceNumber === last + 1;
|
|
17885
17888
|
const isWrap = last >= SEQ_WRAP_THRESHOLD2 && sequenceNumber < SEQ_WRAP_MAX;
|
|
17886
|
-
|
|
17887
|
-
|
|
17888
|
-
|
|
17889
|
+
const isForward = sequenceNumber > last;
|
|
17890
|
+
if (!isForward && !isWrap) {
|
|
17891
|
+
this.logger.error(`[${msgType}] Invalid remote sequence number: expected > ${last}, got ${sequenceNumber}`);
|
|
17892
|
+
controller.error(new Error(`Invalid remote sequence number: expected > ${last}, got ${sequenceNumber}`));
|
|
17889
17893
|
return false;
|
|
17890
17894
|
}
|
|
17891
|
-
|
|
17895
|
+
if (sequenceNumber !== last + 1 && !isWrap) {
|
|
17896
|
+
this.logger.warn(`[${msgType}] Remote sequence number gap: expected ${last + 1}, got ${sequenceNumber} (skipped ${sequenceNumber - last - 1})`);
|
|
17897
|
+
} else {
|
|
17898
|
+
this.logger.debug(`[${msgType}] Sequence number advanced: ${last} \u2192 ${sequenceNumber}`);
|
|
17899
|
+
}
|
|
17892
17900
|
this.context.lastRemoteSequenceNumber = sequenceNumber;
|
|
17893
17901
|
return true;
|
|
17894
17902
|
}
|