@fails-components/webtransport 1.6.9 → 1.6.11
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/lib/http2/browser/browserparser.d.ts.map +1 -1
- package/dist/lib/http2/node/websocketparser.d.ts +5 -5
- package/dist/lib/http2/node/websocketparser.d.ts.map +1 -1
- package/dist/lib/http2/parserbase.d.ts.map +1 -1
- package/dist/lib/http2/stream.d.ts.map +1 -1
- package/lib/http2/browser/browserparser.js +8 -7
- package/lib/http2/node/capsuleparser.js +1 -1
- package/lib/http2/node/websocketparser.js +29 -21
- package/lib/http2/parserbase.js +6 -3
- package/lib/http2/stream.js +3 -2
- package/lib/session.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browserparser.d.ts","sourceRoot":"","sources":["../../../../lib/http2/browser/browserparser.js"],"names":[],"mappings":"AAeA;IACE,2BAAwB;IACxB,uBAAoB;IACpB,yBAAsB;IACtB,wBAAqB;IACrB,uBAAoB;IACpB,uBAAoB;IACpB;;OAEG;IACH,uNAFW,OAAO,gBAAgB,EAAE,mBAAmB,EAgDtD;IA3BC,cAAY;IACZ;QACE,qBAAqB;gBAAV,MAAM;QAEjB,qBAAqB;cAAV,MAAM;QAEjB,2BAA2B;gBAAhB,UAAU,EAAE;QAEvB,qBAAqB;gBAAV,MAAM;QAEjB,qBAAqB;sBAAV,MAAM;MAElB;IACD,+BAA+B;IAC/B,OADW,SAAO,SAAS,CACL;IAEtB,mBAAsB;
|
|
1
|
+
{"version":3,"file":"browserparser.d.ts","sourceRoot":"","sources":["../../../../lib/http2/browser/browserparser.js"],"names":[],"mappings":"AAeA;IACE,2BAAwB;IACxB,uBAAoB;IACpB,yBAAsB;IACtB,wBAAqB;IACrB,uBAAoB;IACpB,uBAAoB;IACpB;;OAEG;IACH,uNAFW,OAAO,gBAAgB,EAAE,mBAAmB,EAgDtD;IA3BC,cAAY;IACZ;QACE,qBAAqB;gBAAV,MAAM;QAEjB,qBAAqB;cAAV,MAAM;QAEjB,2BAA2B;gBAAhB,UAAU,EAAE;QAEvB,qBAAqB;gBAAV,MAAM;QAEjB,qBAAqB;sBAAV,MAAM;MAElB;IACD,+BAA+B;IAC/B,OADW,SAAO,SAAS,CACL;IAEtB,mBAAsB;IA2JxB;;OAEG;IACH,kDAFU;QAAC,IAAI,SAAS;QAAC,WAAW,EAAE,MAAM,SAAO,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,UAAU,GAAC,SAAS,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAC,WA6B3G;CAaF"}
|
|
@@ -36,18 +36,18 @@ export class WebSocketParser extends ParserBaseHttp2 {
|
|
|
36
36
|
rtype: number | undefined;
|
|
37
37
|
bidirectionalLimitsSet: boolean;
|
|
38
38
|
unidirectionalLimitsSet: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* @type {Uint8Array[]| undefined}
|
|
41
|
+
*/
|
|
42
|
+
contframes: Uint8Array[] | undefined;
|
|
43
|
+
remainlength: number;
|
|
39
44
|
maskcontext: {
|
|
40
45
|
mask: Uint8Array;
|
|
41
46
|
offset: number;
|
|
42
47
|
} | undefined;
|
|
43
48
|
lastopcode: number | undefined;
|
|
44
49
|
curtype: number | bigint | undefined;
|
|
45
|
-
/**
|
|
46
|
-
* @type {Uint8Array[]}
|
|
47
|
-
*/
|
|
48
|
-
contframes: Uint8Array[] | undefined;
|
|
49
50
|
cstreamid: bigint | undefined;
|
|
50
|
-
remainlength: any;
|
|
51
51
|
rstreamid: bigint | undefined;
|
|
52
52
|
rfin: boolean | undefined;
|
|
53
53
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocketparser.d.ts","sourceRoot":"","sources":["../../../../lib/http2/node/websocketparser.js"],"names":[],"mappings":"AAiDA;;;GAGG;AACH,qCAHU;IAAC,MAAM,SAAS;IAAC,MAAM,EAAE,UAAU,EAAE,CAAC;IAAC,IAAI,SAAS;IAAC,MAAM,SAAS;IAAC,YAAY,SAAQ;CAAC,MAC1F;IAAC,MAAM,SAAS;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,sBAmB3C;AAmHD;IACE,2BAAwB;IACxB,uBAAoB;IACpB,yBAAsB;IACtB,wBAAqB;IACrB,uBAAoB;IACpB,uBAAoB;IAwBlB,aAAe;IACf;QACE,qBAAqB;gBAAV,MAAM;QAEjB,qBAAqB;cAAV,MAAM;QAEjB,2BAA2B;gBAAhB,UAAU,EAAE;QAEvB,qBAAqB;gBAAV,MAAM;QAEjB,qBAAqB;sBAAV,MAAM;MAElB;IACD,+BAA+B;IAC/B,OADW,SAAO,SAAS,CACL;IAEtB,gCAAmC;IACnC,iCAAoC;
|
|
1
|
+
{"version":3,"file":"websocketparser.d.ts","sourceRoot":"","sources":["../../../../lib/http2/node/websocketparser.js"],"names":[],"mappings":"AAiDA;;;GAGG;AACH,qCAHU;IAAC,MAAM,SAAS;IAAC,MAAM,EAAE,UAAU,EAAE,CAAC;IAAC,IAAI,SAAS;IAAC,MAAM,SAAS;IAAC,YAAY,SAAQ;CAAC,MAC1F;IAAC,MAAM,SAAS;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,sBAmB3C;AAmHD;IACE,2BAAwB;IACxB,uBAAoB;IACpB,yBAAsB;IACtB,wBAAqB;IACrB,uBAAoB;IACpB,uBAAoB;IAwBlB,aAAe;IACf;QACE,qBAAqB;gBAAV,MAAM;QAEjB,qBAAqB;cAAV,MAAM;QAEjB,2BAA2B;gBAAhB,UAAU,EAAE;QAEvB,qBAAqB;gBAAV,MAAM;QAEjB,qBAAqB;sBAAV,MAAM;MAElB;IACD,+BAA+B;IAC/B,OADW,SAAO,SAAS,CACL;IAEtB,gCAAmC;IACnC,iCAAoC;IAEpC;;OAEG;IACH,YAFU,UAAU,EAAE,GAAE,SAAS,CAEN;IAC3B,qBAAqB;IA0FX;;;kBAGC;IAKD,+BAAwB;IA0HtB,qCAAmB;IA2Gf,8BAAyB;IAgH3B,8BAAyB;IACzB,0BAAuD;IAmEvE;;OAEG;IACH,qDAGC;IADC,+BAAqB;IAGvB;;OAEG;IACH,kBAFW,UAAU,QAIpB;IAED;;OAEG;IACH,kDAFU;QAAC,IAAI,SAAS;QAAC,WAAW,EAAE,MAAM,SAAO,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,UAAU,GAAC,SAAS,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAC,WAoD3G;IAED;;;OAGG;IACH,gBAHU;QAAC,MAAM,SAAS;QAAC,MAAM,EAAE,UAAU,EAAE,CAAC;QAAC,IAAI,SAAS;QAAC,MAAM,SAAS;QAAC,YAAY,SAAQ;KAAC,6BACzF;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;KAAE;;;kBAyB5D;IAED;;OAEG;IACH,kCAFW;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,UAAU,GAAC,SAAS,CAAC;KAAE,WAmC5D;CAmBF;0BAz2BY,OAAO,YAAY,EAAE,WAAW"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parserbase.d.ts","sourceRoot":"","sources":["../../../lib/http2/parserbase.js"],"names":[],"mappings":"AAOA;IACE,uBAA2B;IAC3B,+BAAmC;IACnC,+BAAmC;IACnC,+BAAmC;IACnC,8BAAkC;IAClC,2BAA+B;IAC/B,kCAAsC;IACtC,mCAAuC;IACvC,oCAAwC;IACxC,+BAAmC;IACnC,sCAA0C;IAC1C,wCAA4C;IAC5C,uCAA2C;IAC3C,gCAAgC;IAChC,gCAAgC;IAChC,wBAAsB;IAEtB;;OAEG;IACH,mNAFW,OAAO,UAAU,EAAE,UAAU,EA0BvC;IAfC,aAA4B;IAC5B,kBAAwB;IACxB,sBAAsB;IACtB,SADW,OAAO,CACE;IAEpB,2CAA4E;IAC5E,0CAA0E;IAC1E,yCAAwE;IACxE,2CAA0E;IAC1E,qCAAgE;IAEhE,kDAAkD;IAClD,WADW,IAAI,MAAM,EAAC,uBAAuB,CAAC,CACpB;IAE1B,6BAAwC;IAG1C;;;OAGG;IAEH,gBAHW,UAAU,EAAE,QAKtB;IAED;;;OAGG;IAEH,kDAHU;QAAC,IAAI,SAAS;QAAC,WAAW,EAAE,MAAM,SAAO,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,UAAU,GAAC,SAAS,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAC,QAK3G;IAED;;;OAGG;IACH,8BAFW,OAAO,CAIjB;IAED;;OAEG;IACH,4BAFU;QAAC,IAAI,SAAS;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,QAiBvC;IAED;;;OAGG;IACH,oBAHW,MAAM,YACN;QAAC,SAAS,EAAE,MAAM,CAAC;QAAA,WAAW,EAAE,MAAM,CAAA;KAAC,uCA+CjD;IAED,4BAUC;IAPC,oDAAoC;IAStC,oBASC;IAED;;OAEG;IACH,eAFW,MAAM,GAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"parserbase.d.ts","sourceRoot":"","sources":["../../../lib/http2/parserbase.js"],"names":[],"mappings":"AAOA;IACE,uBAA2B;IAC3B,+BAAmC;IACnC,+BAAmC;IACnC,+BAAmC;IACnC,8BAAkC;IAClC,2BAA+B;IAC/B,kCAAsC;IACtC,mCAAuC;IACvC,oCAAwC;IACxC,+BAAmC;IACnC,sCAA0C;IAC1C,wCAA4C;IAC5C,uCAA2C;IAC3C,gCAAgC;IAChC,gCAAgC;IAChC,wBAAsB;IAEtB;;OAEG;IACH,mNAFW,OAAO,UAAU,EAAE,UAAU,EA0BvC;IAfC,aAA4B;IAC5B,kBAAwB;IACxB,sBAAsB;IACtB,SADW,OAAO,CACE;IAEpB,2CAA4E;IAC5E,0CAA0E;IAC1E,yCAAwE;IACxE,2CAA0E;IAC1E,qCAAgE;IAEhE,kDAAkD;IAClD,WADW,IAAI,MAAM,EAAC,uBAAuB,CAAC,CACpB;IAE1B,6BAAwC;IAG1C;;;OAGG;IAEH,gBAHW,UAAU,EAAE,QAKtB;IAED;;;OAGG;IAEH,kDAHU;QAAC,IAAI,SAAS;QAAC,WAAW,EAAE,MAAM,SAAO,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,UAAU,GAAC,SAAS,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;KAAC,QAK3G;IAED;;;OAGG;IACH,8BAFW,OAAO,CAIjB;IAED;;OAEG;IACH,4BAFU;QAAC,IAAI,SAAS;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,QAiBvC;IAED;;;OAGG;IACH,oBAHW,MAAM,YACN;QAAC,SAAS,EAAE,MAAM,CAAC;QAAA,WAAW,EAAE,MAAM,CAAA;KAAC,uCA+CjD;IAED,4BAUC;IAPC,oDAAoC;IAStC,oBASC;IAED;;OAEG;IACH,eAFW,MAAM,GAAC,SAAS,QAgB1B;IAED;;;OAGG;IACH,0BAHW,MAAM,UACN,MAAM,QAUhB;IAED;;OAEG;IACH,iCAFW,MAAM,GAAC,SAAS,QAM1B;IAED;;OAEG;IACH,gCAFW,MAAM,GAAC,SAAS,QAM1B;IAED;;OAEG;IACH,mBAFW,MAAM,GAAC,SAAS,QAK1B;IAED;;;OAGG;IACH,8BAHW,MAAM,UACN,MAAM,QAMhB;IAED;;OAEG;IACH,iCAFW,MAAM,GAAC,SAAS,QAW1B;IAED;;OAEG;IACH,kCAFW,MAAM,GAAC,SAAS,QAW1B;IAED;;OAEG;IACH,6CAFW;QAAC,IAAI,EAAG,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,QAezC;IAED,gBAEC;IAED;;;OAGG;IACH,4BAFW,MAAM,WAIhB;IAED;;;OAGG;IACH,mCAFW,MAAM,QAIhB;IAED;;;OAGG;IACH,uBAFW,MAAM,QAKhB;IAED;;;;OAIG;IACH,wCAHW,MAAM,8BACN;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,QAKlD;IAED;;OAEG;IAEH,uBAHW,MAAM,QAKhB;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../lib/http2/stream.js"],"names":[],"mappings":"AAwBA;IACE;;;;;;;;;;;SAWK;IACL,uMAXW;QAAC,QAAQ,EAAE,MAAM,CAAC;QAC5B,cAAgB,EAAE,OAAO,CAAC;QAC1B,QAAU,EAAE,OAAO,CAAC;QACpB,aAAe,EAAE,UAAU,CAAA;QAC3B,gBAAkB,SAAS;QAC3B,mBAAqB,SAAS;QAC9B,2BAA6B,EAAE,OAAO,CAAA;QACtC,sBAAwB,SAAS;QACjC,qBAAuB,EAAE,cAAc,CAAC;QACxC,eAAiB,EAAE,eAAe,CAAA;KAAC,EAmDnC;IArCC,+CAA+C;IAE/C,OAFW,OAAO,WAAW,EAAE,YAAY,CAErB;IACtB,iBAAwB;IACxB,iCAAiC;IACjC,WADW,MAAM,WAAW,CAAC,CACV;IAEnB,0BAAkC;IAClC,mDAAmD;IACnD;;aADsC,OAAO;QACxB;IAErB,+BAOE;IACF,sCAAkD;IAClD,gEAAsC;IAEtC,eAAkB;IAClB,0BAA6B;IAC7B,sBAAwB;IACxB,qBAAwB;IACxB,kBAAkB;IAElB,yBAA4B;IAC5B,yBAA4B;IAU9B,8BAEC;IAED;;;;OAIG;IACH;QAHuC,IAAI,EAAhC,UAAU,EAAE,GAAC,SAAS;QACT,GAAG;aAwC1B;IAED,oBAwEC;IAED,qBAGC;IAED,mBAIC;IAED,oBAEC;IAED;;OAEG;IACH,qBAFW,aAAa,GAAC,aAAa,QAWrC;IAED,sBAGC;IAED,sBAGC;IAED,
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../lib/http2/stream.js"],"names":[],"mappings":"AAwBA;IACE;;;;;;;;;;;SAWK;IACL,uMAXW;QAAC,QAAQ,EAAE,MAAM,CAAC;QAC5B,cAAgB,EAAE,OAAO,CAAC;QAC1B,QAAU,EAAE,OAAO,CAAC;QACpB,aAAe,EAAE,UAAU,CAAA;QAC3B,gBAAkB,SAAS;QAC3B,mBAAqB,SAAS;QAC9B,2BAA6B,EAAE,OAAO,CAAA;QACtC,sBAAwB,SAAS;QACjC,qBAAuB,EAAE,cAAc,CAAC;QACxC,eAAiB,EAAE,eAAe,CAAA;KAAC,EAmDnC;IArCC,+CAA+C;IAE/C,OAFW,OAAO,WAAW,EAAE,YAAY,CAErB;IACtB,iBAAwB;IACxB,iCAAiC;IACjC,WADW,MAAM,WAAW,CAAC,CACV;IAEnB,0BAAkC;IAClC,mDAAmD;IACnD;;aADsC,OAAO;QACxB;IAErB,+BAOE;IACF,sCAAkD;IAClD,gEAAsC;IAEtC,eAAkB;IAClB,0BAA6B;IAC7B,sBAAwB;IACxB,qBAAwB;IACxB,kBAAkB;IAElB,yBAA4B;IAC5B,yBAA4B;IAU9B,8BAEC;IAED;;;;OAIG;IACH;QAHuC,IAAI,EAAhC,UAAU,EAAE,GAAC,SAAS;QACT,GAAG;aAwC1B;IAED,oBAwEC;IAED,qBAGC;IAED,mBAIC;IAED,oBAEC;IAED;;OAEG;IACH,qBAFW,aAAa,GAAC,aAAa,QAWrC;IAED,sBAGC;IAED,sBAGC;IAED,gBAKC;IAED;;OAEG;IACH,gCAWC;IAED,cAEC;IAED;;OAEG;IACH,gCAYC;IAED;;OAEG;IACH,gBAFW,UAAU,QAMpB;IAED,0BAEC;IAED,oBA6FC;IAED,oBAKC;IAED;;;OAGG;IACH,oDAFW;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,QAOlD;IAED;;OAEG;IACH,+BAFW,MAAM,QAShB;IAED;;OAEG;IACH,0BAFW,MAAM,QAQhB;IAED;;OAEG;IACH,mBAFW,MAAM,QAIhB;IAED,qBAEC;IAED;;OAEG;IACH,kCAFW;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,QAM1C;IAED,mBAIC;CACF;;;;6CA3cY,OAAO,UAAU,EAAE,8BAA8B;;;;oCACjD,OAAO,UAAU,EAAE,qBAAqB;;;;8BACxC,OAAO,UAAU,EAAE,eAAe;;;;+BAClC,OAAO,UAAU,EAAE,gBAAgB;;;;uCACnC,OAAO,UAAU,EAAE,wBAAwB;;;;0BAE3C,OAAO,UAAU,EAAE,WAAW;;;;8BAC9B,OAAO,sBAAsB,EAAE,eAAe"}
|
|
@@ -131,13 +131,14 @@ export class BrowserParser extends ParserBase {
|
|
|
131
131
|
if (offsetend - bufferstate.offset >= 0) {
|
|
132
132
|
const fin = type === ParserBase.WT_STREAM_WFIN
|
|
133
133
|
if (fin) object.onFin()
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
134
|
+
if (fin || offsetend - bufferstate.offset > 0)
|
|
135
|
+
object.recvData({
|
|
136
|
+
data: getUint8ArraysfromBuffer(
|
|
137
|
+
bufferstate,
|
|
138
|
+
offsetend - bufferstate.offset
|
|
139
|
+
),
|
|
140
|
+
fin
|
|
141
|
+
})
|
|
141
142
|
}
|
|
142
143
|
}
|
|
143
144
|
}
|
|
@@ -175,7 +175,6 @@ export class Http2CapsuleParser extends ParserBaseHttp2 {
|
|
|
175
175
|
const fin =
|
|
176
176
|
type === Http2CapsuleParser.WT_STREAM_WFIN &&
|
|
177
177
|
bufferstate.size >= length + offsetbegin
|
|
178
|
-
if (fin) object.onFin()
|
|
179
178
|
object.recvData({
|
|
180
179
|
data:
|
|
181
180
|
offsetend - bufferstate.offset > 0
|
|
@@ -186,6 +185,7 @@ export class Http2CapsuleParser extends ParserBaseHttp2 {
|
|
|
186
185
|
: undefined,
|
|
187
186
|
fin
|
|
188
187
|
})
|
|
188
|
+
if (fin) object.onFin()
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
191
|
break
|
|
@@ -231,6 +231,12 @@ export class WebSocketParser extends ParserBaseHttp2 {
|
|
|
231
231
|
|
|
232
232
|
this.bidirectionalLimitsSet = false
|
|
233
233
|
this.unidirectionalLimitsSet = false
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* @type {Uint8Array[]| undefined}
|
|
237
|
+
*/
|
|
238
|
+
this.contframes = undefined
|
|
239
|
+
this.remainlength = 0
|
|
234
240
|
}
|
|
235
241
|
|
|
236
242
|
/**
|
|
@@ -256,7 +262,7 @@ export class WebSocketParser extends ParserBaseHttp2 {
|
|
|
256
262
|
return
|
|
257
263
|
}
|
|
258
264
|
let curbyte = readByte(bufferstate)
|
|
259
|
-
const
|
|
265
|
+
const wsfin = !!((curbyte & 0x80) >>> 7)
|
|
260
266
|
const rsv = (curbyte & 0x30) >>> 4
|
|
261
267
|
if (rsv !== 0) {
|
|
262
268
|
log('Rsv bits set, should not happen!')
|
|
@@ -327,10 +333,12 @@ export class WebSocketParser extends ParserBaseHttp2 {
|
|
|
327
333
|
} else {
|
|
328
334
|
this.maskcontext = undefined
|
|
329
335
|
}
|
|
330
|
-
if (!
|
|
336
|
+
if (!wsfin && opcode !== WebSocketParser.WS_CONTINUE) {
|
|
331
337
|
this.lastopcode = opcode
|
|
338
|
+
this.contframes = undefined // reset
|
|
332
339
|
}
|
|
333
|
-
|
|
340
|
+
const lastopcode = this.lastopcode // local copy
|
|
341
|
+
if (wsfin) this.lastopcode = undefined
|
|
334
342
|
if (
|
|
335
343
|
opcode === WebSocketParser.WS_CLOSE ||
|
|
336
344
|
opcode === WebSocketParser.WS_PING ||
|
|
@@ -410,7 +418,7 @@ export class WebSocketParser extends ParserBaseHttp2 {
|
|
|
410
418
|
} else if (
|
|
411
419
|
opcode === WebSocketParser.WS_BINARY ||
|
|
412
420
|
(opcode === WebSocketParser.WS_CONTINUE &&
|
|
413
|
-
|
|
421
|
+
lastopcode === WebSocketParser.WS_BINARY)
|
|
414
422
|
) {
|
|
415
423
|
let typelength
|
|
416
424
|
let type
|
|
@@ -491,7 +499,7 @@ export class WebSocketParser extends ParserBaseHttp2 {
|
|
|
491
499
|
type !== ParserBase.WT_STREAM_WOFIN ||
|
|
492
500
|
type !== ParserBase.WT_STREAM_WFIN
|
|
493
501
|
) {
|
|
494
|
-
if (
|
|
502
|
+
if (wsfin) {
|
|
495
503
|
wbufferstate = { ...bufferstate }
|
|
496
504
|
if (this.contframes) {
|
|
497
505
|
const newframes = getUint8ArraysfromBuffer(
|
|
@@ -511,13 +519,10 @@ export class WebSocketParser extends ParserBaseHttp2 {
|
|
|
511
519
|
curBuf: 0,
|
|
512
520
|
curBufOffset: 0
|
|
513
521
|
}
|
|
522
|
+
this.contframes = undefined // reset
|
|
514
523
|
}
|
|
515
524
|
} else {
|
|
516
|
-
if (!this.contframes)
|
|
517
|
-
/**
|
|
518
|
-
* @type {Uint8Array[]}
|
|
519
|
-
*/
|
|
520
|
-
this.contframes = []
|
|
525
|
+
if (!this.contframes) this.contframes = []
|
|
521
526
|
const newframes = getUint8ArraysfromBuffer(
|
|
522
527
|
bufferstate,
|
|
523
528
|
offsetend - bufferstate.offset
|
|
@@ -574,19 +579,21 @@ export class WebSocketParser extends ParserBaseHttp2 {
|
|
|
574
579
|
// TODO submit data
|
|
575
580
|
if (offsetend - bufferstate.offset >= 0) {
|
|
576
581
|
const fin =
|
|
582
|
+
wsfin /* The WS packet might be broken into pieces */ &&
|
|
577
583
|
type === ParserBase.WT_STREAM_WFIN &&
|
|
578
584
|
bufferstate.size >= length + offsetbegin
|
|
585
|
+
if (fin || offsetend - bufferstate.offset > 0)
|
|
586
|
+
object.recvData({
|
|
587
|
+
data:
|
|
588
|
+
offsetend - bufferstate.offset > 0
|
|
589
|
+
? getUint8ArraysfromBuffer(
|
|
590
|
+
bufferstate,
|
|
591
|
+
offsetend - bufferstate.offset
|
|
592
|
+
)
|
|
593
|
+
: undefined,
|
|
594
|
+
fin
|
|
595
|
+
})
|
|
579
596
|
if (fin) object.onFin()
|
|
580
|
-
object.recvData({
|
|
581
|
-
data:
|
|
582
|
-
offsetend - bufferstate.offset > 0
|
|
583
|
-
? getUint8ArraysfromBuffer(
|
|
584
|
-
bufferstate,
|
|
585
|
-
offsetend - bufferstate.offset
|
|
586
|
-
)
|
|
587
|
-
: undefined,
|
|
588
|
-
fin
|
|
589
|
-
})
|
|
590
597
|
}
|
|
591
598
|
}
|
|
592
599
|
break
|
|
@@ -669,7 +676,7 @@ export class WebSocketParser extends ParserBaseHttp2 {
|
|
|
669
676
|
this.mode = 'c'
|
|
670
677
|
if (typeof streamid !== 'undefined') {
|
|
671
678
|
this.rstreamid = streamid
|
|
672
|
-
this.rfin = type === ParserBase.WT_STREAM_WFIN
|
|
679
|
+
this.rfin = type === ParserBase.WT_STREAM_WFIN && wsfin
|
|
673
680
|
}
|
|
674
681
|
}
|
|
675
682
|
advanceBufferToOffset(bufferstate, offsetend)
|
|
@@ -698,6 +705,7 @@ export class WebSocketParser extends ParserBaseHttp2 {
|
|
|
698
705
|
// TODO submitData
|
|
699
706
|
const object = this.wtstreams.get(this.rstreamid)
|
|
700
707
|
const fin =
|
|
708
|
+
!!this.rfin &&
|
|
701
709
|
this.rtype === ParserBase.WT_STREAM_WFIN &&
|
|
702
710
|
this.remainlength === clength
|
|
703
711
|
if (object) {
|
package/lib/http2/parserbase.js
CHANGED
|
@@ -176,7 +176,10 @@ export class ParserBase {
|
|
|
176
176
|
* @param {bigint|undefined} val
|
|
177
177
|
*/
|
|
178
178
|
onMaxData(val) {
|
|
179
|
-
if (
|
|
179
|
+
if (
|
|
180
|
+
typeof val !== 'undefined' &&
|
|
181
|
+
this.session.flowController.updateSendWindowOffset(val)
|
|
182
|
+
) {
|
|
180
183
|
let pending = false
|
|
181
184
|
this.wtstreams.forEach((stream, streamid) => {
|
|
182
185
|
if (stream.hasPendingData()) {
|
|
@@ -194,7 +197,7 @@ export class ParserBase {
|
|
|
194
197
|
*/
|
|
195
198
|
onMaxStreamData(streamid, offset) {
|
|
196
199
|
const object = this.wtstreams.get(streamid)
|
|
197
|
-
if (object && offset) {
|
|
200
|
+
if (typeof object !== 'undefined' && offset) {
|
|
198
201
|
if (object.flowController.updateSendWindowOffset(offset)) {
|
|
199
202
|
this.scheduleDrainWriteStream(streamid)
|
|
200
203
|
this.drainWrites()
|
|
@@ -310,7 +313,7 @@ export class ParserBase {
|
|
|
310
313
|
*/
|
|
311
314
|
removeStream(streamid) {
|
|
312
315
|
this.scheduler.Unregister(streamid)
|
|
313
|
-
|
|
316
|
+
this.wtstreams.delete(streamid)
|
|
314
317
|
}
|
|
315
318
|
|
|
316
319
|
/**
|
package/lib/http2/stream.js
CHANGED
|
@@ -251,13 +251,14 @@ export class Http2WebTransportStream {
|
|
|
251
251
|
onClose() {
|
|
252
252
|
// ok, inform our session id manager
|
|
253
253
|
this.streamIdManager.onStreamClosed(this.streamid)
|
|
254
|
+
// also remove from capsule parser
|
|
255
|
+
this.capsuleParser.removeStream(this.streamid)
|
|
254
256
|
}
|
|
255
257
|
|
|
256
258
|
/**
|
|
257
259
|
* @param {Number} code
|
|
258
260
|
*/
|
|
259
261
|
stopSending(code) {
|
|
260
|
-
this.closeIncoming()
|
|
261
262
|
this.capsuleParser.writeCapsule({
|
|
262
263
|
type: ParserBase.WT_STOP_SENDING,
|
|
263
264
|
headerVints: [this.streamid, code],
|
|
@@ -375,7 +376,7 @@ export class Http2WebTransportStream {
|
|
|
375
376
|
}
|
|
376
377
|
}
|
|
377
378
|
if (finsend) {
|
|
378
|
-
this.
|
|
379
|
+
this.closeOutgoing()
|
|
379
380
|
return
|
|
380
381
|
}
|
|
381
382
|
|
package/lib/session.js
CHANGED
|
@@ -545,7 +545,7 @@ export class HttpWTSession {
|
|
|
545
545
|
onClose(args) {
|
|
546
546
|
delete this.objint // not valid any more
|
|
547
547
|
|
|
548
|
-
if (this.state !== 'connected') {
|
|
548
|
+
if (this.state !== 'connected' && this.state !== 'draining') {
|
|
549
549
|
log.error(
|
|
550
550
|
'session was closed before state was "connected" - it was "%s"',
|
|
551
551
|
this.state
|