]> git.proxmox.com Git - mirror_novnc.git/commitdiff
Remove Websock implicit read length
authorPierre Ossman <ossman@cendio.se>
Sun, 14 May 2023 18:15:12 +0000 (20:15 +0200)
committerPierre Ossman <ossman@cendio.se>
Sun, 4 Jun 2023 17:00:33 +0000 (19:00 +0200)
Callers should be properly aware of how much data they need, as they
need to call rQwait() first to ensure the data is present.

core/websock.js
tests/test.websock.js

index 7b770d4b5c5da188726364938ce3efc887a4b815..b6891329e67ca4c9a9483eff7f50b5ddba28356c 100644 (file)
@@ -125,7 +125,6 @@ export default class Websock {
     }
 
     rQshiftStr(len) {
-        if (typeof(len) === 'undefined') { len = this._rQlen - this._rQi; }
         let str = "";
         // Handle large arrays in steps to avoid long strings on the stack
         for (let i = 0; i < len; i += 4096) {
@@ -136,20 +135,17 @@ export default class Websock {
     }
 
     rQshiftBytes(len) {
-        if (typeof(len) === 'undefined') { len = this._rQlen - this._rQi; }
         this._rQi += len;
         return new Uint8Array(this._rQ.buffer, this._rQi - len, len);
     }
 
     rQshiftTo(target, len) {
-        if (len === undefined) { len = this._rQlen - this._rQi; }
         // TODO: make this just use set with views when using a ArrayBuffer to store the rQ
         target.set(new Uint8Array(this._rQ.buffer, this._rQi, len));
         this._rQi += len;
     }
 
     rQpeekBytes(len) {
-        if (typeof(len) === 'undefined') { len = this._rQlen - this._rQi; }
         return new Uint8Array(this._rQ.buffer, this._rQi, len);
     }
 
index 91f69865ddd44b1e4b6d39f5c7174c9fec2a82ee..2034bd6e70017e1372e18f0c0ff439f5a810910f 100644 (file)
@@ -67,11 +67,6 @@ describe('Websock', function () {
                 expect(sock._rQlen - sock._rQi).to.equal(befLen - 3);
             });
 
-            it('should shift the entire rest of the queue off if no length is given', function () {
-                sock.rQshiftStr();
-                expect(sock._rQlen - sock._rQi).to.equal(0);
-            });
-
             it('should be able to handle very large strings', function () {
                 const BIG_LEN = 500000;
                 const RQ_BIG = new Uint8Array(BIG_LEN);
@@ -90,7 +85,7 @@ describe('Websock', function () {
                 sock._rQ.set(RQ_BIG);
                 sock._rQlen = RQ_BIG.length;
 
-                const shifted = sock.rQshiftStr();
+                const shifted = sock.rQshiftStr(BIG_LEN);
 
                 expect(shifted).to.be.equal(expected);
                 expect(sock._rQlen - sock._rQi).to.equal(0);
@@ -106,11 +101,6 @@ describe('Websock', function () {
                 expect(shifted).to.array.equal(new Uint8Array(RQ_TEMPLATE.buffer, befRQi, 3));
                 expect(sock._rQlen - sock._rQi).to.equal(befLen - 3);
             });
-
-            it('should shift the entire rest of the queue off if no length is given', function () {
-                sock.rQshiftBytes();
-                expect(sock._rQlen - sock._rQi).to.equal(0);
-            });
         });
 
         describe('rQpeekBytes', function () {
@@ -130,12 +120,6 @@ describe('Websock', function () {
                 expect(sl).to.array.equal(new Uint8Array(RQ_TEMPLATE.buffer, 0, 2));
             });
 
-            it('should use the rest of the receive queue if no end is given', function () {
-                const sl = sock.rQpeekBytes();
-                expect(sl).to.have.length(RQ_TEMPLATE.length);
-                expect(sl).to.array.equal(RQ_TEMPLATE);
-            });
-
             it('should take the current rQi in to account', function () {
                 sock._rQi = 1;
                 expect(sock.rQpeekBytes(2)).to.array.equal(new Uint8Array(RQ_TEMPLATE.buffer, 1, 2));