appium-ios-remotexpc 5.18.2 → 5.18.4
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/CHANGELOG.md +12 -0
- package/build/src/lib/remote-xpc/constants.d.ts +3 -0
- package/build/src/lib/remote-xpc/constants.d.ts.map +1 -1
- package/build/src/lib/remote-xpc/constants.js +3 -0
- package/build/src/lib/remote-xpc/constants.js.map +1 -1
- package/build/src/lib/remote-xpc/handshake.d.ts +4 -0
- package/build/src/lib/remote-xpc/handshake.d.ts.map +1 -1
- package/build/src/lib/remote-xpc/handshake.js +17 -9
- package/build/src/lib/remote-xpc/handshake.js.map +1 -1
- package/build/src/lib/remote-xpc/http2-frame-parser.d.ts +7 -0
- package/build/src/lib/remote-xpc/http2-frame-parser.d.ts.map +1 -1
- package/build/src/lib/remote-xpc/http2-frame-parser.js +17 -0
- package/build/src/lib/remote-xpc/http2-frame-parser.js.map +1 -1
- package/build/src/lib/remote-xpc/remote-xpc-framed-transport.d.ts +25 -4
- package/build/src/lib/remote-xpc/remote-xpc-framed-transport.d.ts.map +1 -1
- package/build/src/lib/remote-xpc/remote-xpc-framed-transport.js +126 -19
- package/build/src/lib/remote-xpc/remote-xpc-framed-transport.js.map +1 -1
- package/build/src/lib/remote-xpc/xpc-protocol.d.ts +2 -0
- package/build/src/lib/remote-xpc/xpc-protocol.d.ts.map +1 -1
- package/build/src/lib/remote-xpc/xpc-protocol.js +2 -2
- package/build/src/lib/remote-xpc/xpc-protocol.js.map +1 -1
- package/package.json +1 -1
- package/src/lib/remote-xpc/constants.ts +3 -0
- package/src/lib/remote-xpc/handshake.ts +19 -9
- package/src/lib/remote-xpc/http2-frame-parser.ts +25 -1
- package/src/lib/remote-xpc/remote-xpc-framed-transport.ts +147 -21
- package/src/lib/remote-xpc/xpc-protocol.ts +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
## [5.18.4](https://github.com/appium/appium-ios-remotexpc/compare/v5.18.3...v5.18.4) (2026-09-02)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* **remote-xpc:** reassemble inbound XPC messages in linear time ([#317](https://github.com/appium/appium-ios-remotexpc/issues/317)) ([b98cffb](https://github.com/appium/appium-ios-remotexpc/commit/b98cffb7b87f184527e1d164e58d6241a9db8843))
|
|
6
|
+
|
|
7
|
+
## [5.18.3](https://github.com/appium/appium-ios-remotexpc/compare/v5.18.2...v5.18.3) (2026-09-02)
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **remote-xpc:** honor HTTP/2 frame size and flow control on outbound DATA frames ([#316](https://github.com/appium/appium-ios-remotexpc/issues/316)) ([0b640ad](https://github.com/appium/appium-ios-remotexpc/commit/0b640ada41fec828e31cc7aaa43342a2871f0308))
|
|
12
|
+
|
|
1
13
|
## [5.18.2](https://github.com/appium/appium-ios-remotexpc/compare/v5.18.1...v5.18.2) (2026-09-01)
|
|
2
14
|
|
|
3
15
|
### Miscellaneous Chores
|
|
@@ -10,6 +10,9 @@ export declare const Http2Constants: {
|
|
|
10
10
|
readonly DEFAULT_WIN_SIZE_INCR: number;
|
|
11
11
|
readonly SETTINGS_MAX_CONCURRENT_STREAMS: 3;
|
|
12
12
|
readonly SETTINGS_INITIAL_WINDOW_SIZE: 4;
|
|
13
|
+
readonly SETTINGS_MAX_FRAME_SIZE: 5;
|
|
14
|
+
readonly DEFAULT_PEER_MAX_FRAME_SIZE: 16384;
|
|
15
|
+
readonly DEFAULT_PEER_WINDOW_SIZE: 65535;
|
|
13
16
|
};
|
|
14
17
|
export declare const XpcConstants: {
|
|
15
18
|
readonly XPC_FLAGS_INIT_HANDSHAKE: 4194304;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;CAmBjB,CAAC;AAGX,eAAO,MAAM,YAAY;;;;;CAKf,CAAC"}
|
|
@@ -15,6 +15,9 @@ export const Http2Constants = {
|
|
|
15
15
|
DEFAULT_WIN_SIZE_INCR: 16 * 1024 * 1024 - 65535,
|
|
16
16
|
SETTINGS_MAX_CONCURRENT_STREAMS: 0x03,
|
|
17
17
|
SETTINGS_INITIAL_WINDOW_SIZE: 0x04,
|
|
18
|
+
SETTINGS_MAX_FRAME_SIZE: 0x05,
|
|
19
|
+
DEFAULT_PEER_MAX_FRAME_SIZE: 16384,
|
|
20
|
+
DEFAULT_PEER_WINDOW_SIZE: 65535,
|
|
18
21
|
};
|
|
19
22
|
// XPC Constants
|
|
20
23
|
export const XpcConstants = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/constants.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,OAAO,CAAC;IACrE,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,GAAG;IACrB,QAAQ,EAAE,GAAG;IACb,uCAAuC,EAAE,GAAG;IAC5C,qEAAqE;IACrE,0EAA0E;IAC1E,0EAA0E;IAC1E,iBAAiB;IACjB,oCAAoC,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IACtD,qBAAqB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK;IAC/C,+BAA+B,EAAE,IAAI;IACrC,4BAA4B,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/constants.ts"],"names":[],"mappings":"AAAA,mBAAmB;AACnB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,OAAO,CAAC;IACrE,iBAAiB,EAAE,CAAC;IACpB,YAAY,EAAE,CAAC;IACf,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,GAAG;IACrB,QAAQ,EAAE,GAAG;IACb,uCAAuC,EAAE,GAAG;IAC5C,qEAAqE;IACrE,0EAA0E;IAC1E,0EAA0E;IAC1E,iBAAiB;IACjB,oCAAoC,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IACtD,qBAAqB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK;IAC/C,+BAA+B,EAAE,IAAI;IACrC,4BAA4B,EAAE,IAAI;IAClC,uBAAuB,EAAE,IAAI;IAC7B,2BAA2B,EAAE,KAAK;IAClC,wBAAwB,EAAE,KAAK;CACvB,CAAC;AAEX,gBAAgB;AAChB,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,wBAAwB,EAAE,UAAU;IACpC,oBAAoB,EAAE,UAAU;IAChC,sBAAsB,EAAE,UAAU;IAClC,uBAAuB,EAAE,UAAU;CAC3B,CAAC"}
|
|
@@ -5,9 +5,13 @@ export type MessageId = number;
|
|
|
5
5
|
declare class Handshake {
|
|
6
6
|
private _socket;
|
|
7
7
|
private readonly _nextMessageId;
|
|
8
|
+
private readonly _dataBytesSent;
|
|
8
9
|
constructor(socket: Socket);
|
|
10
|
+
/** DATA payload bytes sent per stream, so the transport can debit its send windows. */
|
|
11
|
+
get dataBytesSent(): Readonly<Record<ChannelId, number>>;
|
|
9
12
|
sendFrame(frame: Buffer): Promise<void>;
|
|
10
13
|
sendRequest(data: XPCDictionary): Promise<void>;
|
|
14
|
+
private sendData;
|
|
11
15
|
perform(): Promise<void>;
|
|
12
16
|
}
|
|
13
17
|
export default Handshake;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/handshake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,UAAU,CAAC;AAErC,OAAO,EAAC,KAAK,aAAa,EAAC,MAAM,aAAa,CAAC;AAK/C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,cAAM,SAAS;IACb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;
|
|
1
|
+
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/handshake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,UAAU,CAAC;AAErC,OAAO,EAAC,KAAK,aAAa,EAAC,MAAM,aAAa,CAAC;AAK/C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAC/B,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,cAAM,SAAS;IACb,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;gBAE/C,MAAM,EAAE,MAAM;IAY1B,uFAAuF;IACvF,IAAI,aAAa,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAEvD;IAEK,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBvC,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YAWvC,QAAQ;IAMhB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAuE/B;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -4,12 +4,21 @@ import { encodeMessage } from './xpc-protocol.js';
|
|
|
4
4
|
class Handshake {
|
|
5
5
|
_socket;
|
|
6
6
|
_nextMessageId;
|
|
7
|
+
_dataBytesSent;
|
|
7
8
|
constructor(socket) {
|
|
8
9
|
this._socket = socket;
|
|
9
10
|
this._nextMessageId = {
|
|
10
11
|
[Http2Constants.ROOT_CHANNEL]: 0,
|
|
11
12
|
[Http2Constants.REPLY_CHANNEL]: 0,
|
|
12
13
|
};
|
|
14
|
+
this._dataBytesSent = {
|
|
15
|
+
[Http2Constants.ROOT_CHANNEL]: 0,
|
|
16
|
+
[Http2Constants.REPLY_CHANNEL]: 0,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
/** DATA payload bytes sent per stream, so the transport can debit its send windows. */
|
|
20
|
+
get dataBytesSent() {
|
|
21
|
+
return { ...this._dataBytesSent };
|
|
13
22
|
}
|
|
14
23
|
async sendFrame(frame) {
|
|
15
24
|
return new Promise((resolve, reject) => {
|
|
@@ -34,9 +43,12 @@ class Handshake {
|
|
|
34
43
|
id: BigInt(this._nextMessageId[Http2Constants.ROOT_CHANNEL]),
|
|
35
44
|
body: data,
|
|
36
45
|
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
46
|
+
await this.sendData(Http2Constants.ROOT_CHANNEL, requestMessage);
|
|
47
|
+
}
|
|
48
|
+
async sendData(streamId, message) {
|
|
49
|
+
const encoded = encodeMessage(message);
|
|
50
|
+
this._dataBytesSent[streamId] += encoded.length;
|
|
51
|
+
await this.sendFrame(new DataFrame(streamId, encoded, []).serialize());
|
|
40
52
|
}
|
|
41
53
|
async perform() {
|
|
42
54
|
try {
|
|
@@ -79,9 +91,7 @@ class Handshake {
|
|
|
79
91
|
id: 0,
|
|
80
92
|
body: null,
|
|
81
93
|
};
|
|
82
|
-
|
|
83
|
-
const dataFrame = new DataFrame(Http2Constants.ROOT_CHANNEL, encodedDataMessage, []);
|
|
84
|
-
await this.sendFrame(dataFrame.serialize());
|
|
94
|
+
await this.sendData(Http2Constants.ROOT_CHANNEL, dataMessage);
|
|
85
95
|
this._nextMessageId[Http2Constants.ROOT_CHANNEL]++;
|
|
86
96
|
// Step 8: Open REPLY_CHANNEL with INIT_HANDSHAKE flags.
|
|
87
97
|
const replyMessage = {
|
|
@@ -89,9 +99,7 @@ class Handshake {
|
|
|
89
99
|
id: 0,
|
|
90
100
|
body: null,
|
|
91
101
|
};
|
|
92
|
-
|
|
93
|
-
const replyDataFrame = new DataFrame(Http2Constants.REPLY_CHANNEL, encodedReplyMessage, []);
|
|
94
|
-
await this.sendFrame(replyDataFrame.serialize());
|
|
102
|
+
await this.sendData(Http2Constants.REPLY_CHANNEL, replyMessage);
|
|
95
103
|
this._nextMessageId[Http2Constants.REPLY_CHANNEL]++;
|
|
96
104
|
// Step 9: Send SETTINGS ACK frame.
|
|
97
105
|
const ackFrame = new SettingsFrame(0, null, ['ACK']);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/handshake.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAC,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAChG,OAAO,EAAkB,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAKjE,MAAM,SAAS;IACL,OAAO,CAAS;IACP,cAAc,CAA+B;
|
|
1
|
+
{"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/handshake.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,13 @@ export interface ParsedDataFrame {
|
|
|
6
6
|
export type ParsedFrame = {
|
|
7
7
|
readonly type: 'data';
|
|
8
8
|
readonly frame: ParsedDataFrame;
|
|
9
|
+
} | {
|
|
10
|
+
readonly type: 'settings';
|
|
11
|
+
readonly settings: Record<number, number>;
|
|
12
|
+
} | {
|
|
13
|
+
readonly type: 'windowUpdate';
|
|
14
|
+
readonly streamId: number;
|
|
15
|
+
readonly increment: number;
|
|
9
16
|
} | {
|
|
10
17
|
readonly type: 'other';
|
|
11
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http2-frame-parser.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/http2-frame-parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http2-frame-parser.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/http2-frame-parser.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,WAAW,GACnB;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;CAAC,GACxD;IAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAC,GACtE;IAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAC,GACtF;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAC,CAAC;AAE7B;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAA2B;IAEzC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE;CAkBrC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,CAKrF"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import { Http2Constants } from './constants.js';
|
|
1
2
|
import { InvalidDataError, WindowUpdateFrame } from './handshake-frames.js';
|
|
2
3
|
const FRAME_HEADER_SIZE = 9;
|
|
3
4
|
const FRAME_TYPE_DATA = 0x00;
|
|
5
|
+
const FRAME_TYPE_SETTINGS = 0x04;
|
|
6
|
+
const FRAME_TYPE_WINDOW_UPDATE = 0x08;
|
|
4
7
|
const FLAG_PADDED = 0x08;
|
|
8
|
+
const SETTINGS_ENTRY_SIZE = 6;
|
|
5
9
|
/**
|
|
6
10
|
* Incrementally parse HTTP/2 frames from a byte stream (RFC 7540).
|
|
7
11
|
*/
|
|
@@ -38,6 +42,12 @@ function parseFrame(buffer) {
|
|
|
38
42
|
const flags = buffer[4];
|
|
39
43
|
const streamId = buffer.readUInt32BE(5) & 0x7fffffff;
|
|
40
44
|
const body = buffer.subarray(FRAME_HEADER_SIZE, FRAME_HEADER_SIZE + length);
|
|
45
|
+
if (type === FRAME_TYPE_SETTINGS && !(flags & Http2Constants.FLAG_ACK)) {
|
|
46
|
+
return { type: 'settings', settings: parseSettings(body) };
|
|
47
|
+
}
|
|
48
|
+
if (type === FRAME_TYPE_WINDOW_UPDATE) {
|
|
49
|
+
return { type: 'windowUpdate', streamId, increment: body.readUInt32BE(0) & 0x7fffffff };
|
|
50
|
+
}
|
|
41
51
|
if (type !== FRAME_TYPE_DATA) {
|
|
42
52
|
return { type: 'other' };
|
|
43
53
|
}
|
|
@@ -47,6 +57,13 @@ function parseFrame(buffer) {
|
|
|
47
57
|
frame: { streamId, data, bodyLen: length },
|
|
48
58
|
};
|
|
49
59
|
}
|
|
60
|
+
/** SETTINGS body is a list of 16-bit identifier / 32-bit value pairs (RFC 7540 §6.5.1). */
|
|
61
|
+
function parseSettings(body) {
|
|
62
|
+
return Object.fromEntries(Array.from({ length: Math.floor(body.length / SETTINGS_ENTRY_SIZE) }, (_, i) => {
|
|
63
|
+
const offset = i * SETTINGS_ENTRY_SIZE;
|
|
64
|
+
return [body.readUInt16BE(offset), body.readUInt32BE(offset + 2)];
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
50
67
|
/**
|
|
51
68
|
* Strip HTTP/2 DATA frame padding (RFC 7540 §6.1).
|
|
52
69
|
* @throws {InvalidDataError} when padding length is invalid
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http2-frame-parser.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/http2-frame-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AAE1E,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,eAAe,GAAG,IAAI,CAAC;AAC7B,MAAM,WAAW,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"http2-frame-parser.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/http2-frame-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,11 @@ export declare class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
15
15
|
private connected;
|
|
16
16
|
private closing;
|
|
17
17
|
private desynced;
|
|
18
|
+
private peerMaxFrameSize;
|
|
19
|
+
private peerInitialWindowSize;
|
|
20
|
+
private connectionSendWindow;
|
|
21
|
+
private streamSendWindows;
|
|
22
|
+
private sendQueue;
|
|
18
23
|
constructor(address: [string, number]);
|
|
19
24
|
get isConnected(): boolean;
|
|
20
25
|
/**
|
|
@@ -29,6 +34,17 @@ export declare class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
29
34
|
get localAddress(): string | undefined;
|
|
30
35
|
connect(options: RemoteXpcFramedTransportConnectOptions): Promise<void>;
|
|
31
36
|
sendDataFrame(payload: Buffer, streamId?: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* Writes queued payloads as DATA frames no larger than the peer's max frame size
|
|
39
|
+
* or its send windows. Stops at the first blocked payload so ordering holds.
|
|
40
|
+
*/
|
|
41
|
+
private flushPendingSends;
|
|
42
|
+
/** Stream 0 is the connection-level window. */
|
|
43
|
+
private sendWindow;
|
|
44
|
+
private adjustSendWindow;
|
|
45
|
+
private consumeSendWindow;
|
|
46
|
+
/** A new INITIAL_WINDOW_SIZE shifts every open stream's window by the delta (RFC 7540 §6.9.2). */
|
|
47
|
+
private applyPeerSettings;
|
|
32
48
|
close(): Promise<void>;
|
|
33
49
|
private waitForSocketConnect;
|
|
34
50
|
/**
|
|
@@ -38,11 +54,16 @@ export declare class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
38
54
|
private registerSocketHandlers;
|
|
39
55
|
private handleData;
|
|
40
56
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
57
|
+
* Accumulates one XPC message per HTTP/2 stream as a chunk list, joined once when
|
|
58
|
+
* complete. Retained chunks are copied so a stalled stream cannot pin the frame
|
|
59
|
+
* parser's buffer; the header is probed from at most its first 24 bytes.
|
|
44
60
|
*/
|
|
45
61
|
private ingestXpcData;
|
|
62
|
+
/**
|
|
63
|
+
* Emits every complete message at the front of `buffer`; an incomplete remainder
|
|
64
|
+
* is re-queued as a copy so it cannot pin the buffer it was sliced from.
|
|
65
|
+
*/
|
|
66
|
+
private drainXpcMessages;
|
|
46
67
|
/**
|
|
47
68
|
* Latches the whole connection closed: framing alignment is lost and the peer's
|
|
48
69
|
* remaining bytes cannot be trusted on any stream. Teardown starts before the
|
|
@@ -56,6 +77,6 @@ export declare class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
56
77
|
*/
|
|
57
78
|
private decodeAndEmit;
|
|
58
79
|
private shutdownSocket;
|
|
59
|
-
private
|
|
80
|
+
private resetConnectionState;
|
|
60
81
|
}
|
|
61
82
|
//# sourceMappingURL=remote-xpc-framed-transport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-xpc-framed-transport.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/remote-xpc-framed-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"remote-xpc-framed-transport.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/remote-xpc-framed-transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAgBzC,MAAM,WAAW,sCAAsC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AASD;;;GAGG;AACH,qBAAa,wBAAyB,SAAQ,YAAY;IACxD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,gBAAgB,CAAsD;IAC9E,OAAO,CAAC,qBAAqB,CAAmD;IAChF,OAAO,CAAC,oBAAoB,CAAmD;IAC/E,OAAO,CAAC,iBAAiB,CAA6B;IACtD,OAAO,CAAC,SAAS,CAA6C;gBAElD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IAKrC,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;;;;;;OAQG;IACH,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAErC;IAEK,OAAO,CAAC,OAAO,EAAE,sCAAsC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC7E,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,IAAI;IAQlD;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAuBzB,+CAA+C;IAC/C,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,iBAAiB;IAKzB,kGAAkG;IAClG,OAAO,CAAC,iBAAiB;IAenB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,OAAO,CAAC,oBAAoB;IAyB5B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAgC9B,OAAO,CAAC,UAAU;IAyClB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA+BrB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IASpB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,oBAAoB;CAU7B"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import net from 'node:net';
|
|
3
3
|
import { getLogger } from '../logger.js';
|
|
4
|
+
import { Http2Constants } from './constants.js';
|
|
4
5
|
import { DataFrame } from './handshake-frames.js';
|
|
5
6
|
import Handshake from './handshake.js';
|
|
6
7
|
import { Http2FrameParser, buildWindowUpdateFrames } from './http2-frame-parser.js';
|
|
7
|
-
import { decodeMessage, probeXpcFraming } from './xpc-protocol.js';
|
|
8
|
+
import { decodeMessage, probeXpcFraming, XPC_WRAPPER_HEADER_SIZE } from './xpc-protocol.js';
|
|
8
9
|
const log = getLogger('RemoteXpcFramedTransport');
|
|
9
10
|
const DEFAULT_SOCKET_CLOSE_TIMEOUT_MS = 1000;
|
|
10
11
|
const DEFAULT_SOCKET_END_TIMEOUT_MS = 500;
|
|
@@ -20,6 +21,11 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
20
21
|
connected = false;
|
|
21
22
|
closing = false;
|
|
22
23
|
desynced = false;
|
|
24
|
+
peerMaxFrameSize = Http2Constants.DEFAULT_PEER_MAX_FRAME_SIZE;
|
|
25
|
+
peerInitialWindowSize = Http2Constants.DEFAULT_PEER_WINDOW_SIZE;
|
|
26
|
+
connectionSendWindow = Http2Constants.DEFAULT_PEER_WINDOW_SIZE;
|
|
27
|
+
streamSendWindows = new Map();
|
|
28
|
+
sendQueue = [];
|
|
23
29
|
constructor(address) {
|
|
24
30
|
super();
|
|
25
31
|
this.address = address;
|
|
@@ -43,7 +49,7 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
43
49
|
if (this.connected) {
|
|
44
50
|
return;
|
|
45
51
|
}
|
|
46
|
-
this.
|
|
52
|
+
this.resetConnectionState();
|
|
47
53
|
const socket = net.createConnection({
|
|
48
54
|
host: this.address[0],
|
|
49
55
|
port: this.address[1],
|
|
@@ -58,7 +64,11 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
58
64
|
await new Promise((resolve) => setTimeout(resolve, options.handshakeDelayMs));
|
|
59
65
|
}
|
|
60
66
|
try {
|
|
61
|
-
|
|
67
|
+
const handshake = new Handshake(socket);
|
|
68
|
+
await handshake.perform();
|
|
69
|
+
for (const [streamId, bytes] of Object.entries(handshake.dataBytesSent)) {
|
|
70
|
+
this.consumeSendWindow(Number(streamId), bytes);
|
|
71
|
+
}
|
|
62
72
|
this.connected = true;
|
|
63
73
|
}
|
|
64
74
|
catch (error) {
|
|
@@ -70,7 +80,63 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
70
80
|
if (!this.socket?.writable) {
|
|
71
81
|
throw new Error('RemoteXPC socket is not writable');
|
|
72
82
|
}
|
|
73
|
-
this.
|
|
83
|
+
this.sendQueue.push({ streamId, payload });
|
|
84
|
+
this.flushPendingSends();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Writes queued payloads as DATA frames no larger than the peer's max frame size
|
|
88
|
+
* or its send windows. Stops at the first blocked payload so ordering holds.
|
|
89
|
+
*/
|
|
90
|
+
flushPendingSends() {
|
|
91
|
+
const socket = this.socket;
|
|
92
|
+
while (socket?.writable && this.sendQueue.length > 0) {
|
|
93
|
+
const send = this.sendQueue[0];
|
|
94
|
+
const size = Math.min(send.payload.length, this.peerMaxFrameSize, this.sendWindow(0), this.sendWindow(send.streamId));
|
|
95
|
+
if (size <= 0 && send.payload.length > 0) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
socket.write(new DataFrame(send.streamId, send.payload.subarray(0, size), []).serialize());
|
|
99
|
+
this.consumeSendWindow(send.streamId, size);
|
|
100
|
+
if (size === send.payload.length) {
|
|
101
|
+
this.sendQueue.shift();
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
send.payload = send.payload.subarray(size);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Stream 0 is the connection-level window. */
|
|
109
|
+
sendWindow(streamId) {
|
|
110
|
+
return streamId === 0
|
|
111
|
+
? this.connectionSendWindow
|
|
112
|
+
: (this.streamSendWindows.get(streamId) ?? this.peerInitialWindowSize);
|
|
113
|
+
}
|
|
114
|
+
adjustSendWindow(streamId, delta) {
|
|
115
|
+
if (streamId === 0) {
|
|
116
|
+
this.connectionSendWindow += delta;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
this.streamSendWindows.set(streamId, this.sendWindow(streamId) + delta);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
consumeSendWindow(streamId, bytes) {
|
|
123
|
+
this.adjustSendWindow(0, -bytes);
|
|
124
|
+
this.adjustSendWindow(streamId, -bytes);
|
|
125
|
+
}
|
|
126
|
+
/** A new INITIAL_WINDOW_SIZE shifts every open stream's window by the delta (RFC 7540 §6.9.2). */
|
|
127
|
+
applyPeerSettings(settings) {
|
|
128
|
+
const maxFrameSize = settings[Http2Constants.SETTINGS_MAX_FRAME_SIZE];
|
|
129
|
+
if (maxFrameSize !== undefined) {
|
|
130
|
+
this.peerMaxFrameSize = maxFrameSize;
|
|
131
|
+
}
|
|
132
|
+
const initialWindowSize = settings[Http2Constants.SETTINGS_INITIAL_WINDOW_SIZE];
|
|
133
|
+
if (initialWindowSize !== undefined) {
|
|
134
|
+
const delta = initialWindowSize - this.peerInitialWindowSize;
|
|
135
|
+
this.peerInitialWindowSize = initialWindowSize;
|
|
136
|
+
for (const [streamId, window] of this.streamSendWindows) {
|
|
137
|
+
this.streamSendWindows.set(streamId, window + delta);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
74
140
|
}
|
|
75
141
|
async close() {
|
|
76
142
|
this.closing = true;
|
|
@@ -152,6 +218,16 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
152
218
|
return;
|
|
153
219
|
}
|
|
154
220
|
for (const frame of frames) {
|
|
221
|
+
if (frame.type === 'settings') {
|
|
222
|
+
this.applyPeerSettings(frame.settings);
|
|
223
|
+
this.flushPendingSends();
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
if (frame.type === 'windowUpdate') {
|
|
227
|
+
this.adjustSendWindow(frame.streamId, frame.increment);
|
|
228
|
+
this.flushPendingSends();
|
|
229
|
+
continue;
|
|
230
|
+
}
|
|
155
231
|
if (frame.type !== 'data') {
|
|
156
232
|
continue;
|
|
157
233
|
}
|
|
@@ -167,30 +243,56 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
167
243
|
}
|
|
168
244
|
}
|
|
169
245
|
/**
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
*
|
|
246
|
+
* Accumulates one XPC message per HTTP/2 stream as a chunk list, joined once when
|
|
247
|
+
* complete. Retained chunks are copied so a stalled stream cannot pin the frame
|
|
248
|
+
* parser's buffer; the header is probed from at most its first 24 bytes.
|
|
173
249
|
*/
|
|
174
250
|
ingestXpcData(streamId, chunk) {
|
|
175
|
-
if (this.desynced) {
|
|
251
|
+
if (this.desynced || chunk.length === 0) {
|
|
176
252
|
return;
|
|
177
253
|
}
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
const framing = probeXpcFraming(
|
|
183
|
-
if (framing.status === '
|
|
184
|
-
this.
|
|
254
|
+
const pending = this.pendingXpcData.get(streamId) ?? { chunks: [], length: 0 };
|
|
255
|
+
const length = pending.length + chunk.length;
|
|
256
|
+
if (pending.byteLength === undefined) {
|
|
257
|
+
const head = Buffer.concat([...pending.chunks, chunk], Math.min(length, XPC_WRAPPER_HEADER_SIZE));
|
|
258
|
+
const framing = probeXpcFraming(head);
|
|
259
|
+
if (framing.status === 'desynced') {
|
|
260
|
+
this.handleDesync(framing.reason);
|
|
185
261
|
return;
|
|
186
262
|
}
|
|
263
|
+
pending.byteLength = framing.byteLength;
|
|
264
|
+
}
|
|
265
|
+
if (pending.byteLength === undefined || length < pending.byteLength) {
|
|
266
|
+
pending.chunks.push(Buffer.from(chunk));
|
|
267
|
+
pending.length = length;
|
|
268
|
+
this.pendingXpcData.set(streamId, pending);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
this.pendingXpcData.delete(streamId);
|
|
272
|
+
this.drainXpcMessages(streamId, pending.chunks.length === 0 ? chunk : Buffer.concat([...pending.chunks, chunk], length));
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Emits every complete message at the front of `buffer`; an incomplete remainder
|
|
276
|
+
* is re-queued as a copy so it cannot pin the buffer it was sliced from.
|
|
277
|
+
*/
|
|
278
|
+
drainXpcMessages(streamId, buffer) {
|
|
279
|
+
let rest = buffer;
|
|
280
|
+
while (rest.length > 0) {
|
|
281
|
+
const framing = probeXpcFraming(rest);
|
|
187
282
|
if (framing.status === 'desynced') {
|
|
188
283
|
this.handleDesync(framing.reason);
|
|
189
284
|
return;
|
|
190
285
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
286
|
+
if (framing.status === 'incomplete') {
|
|
287
|
+
this.pendingXpcData.set(streamId, {
|
|
288
|
+
chunks: [Buffer.from(rest)],
|
|
289
|
+
length: rest.length,
|
|
290
|
+
byteLength: framing.byteLength,
|
|
291
|
+
});
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
this.decodeAndEmit(rest.subarray(0, framing.byteLength));
|
|
295
|
+
rest = rest.subarray(framing.byteLength);
|
|
194
296
|
}
|
|
195
297
|
}
|
|
196
298
|
/**
|
|
@@ -264,10 +366,15 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
264
366
|
}
|
|
265
367
|
});
|
|
266
368
|
}
|
|
267
|
-
|
|
369
|
+
resetConnectionState() {
|
|
268
370
|
this.frameParser = new Http2FrameParser();
|
|
269
371
|
this.pendingXpcData.clear();
|
|
270
372
|
this.desynced = false;
|
|
373
|
+
this.peerMaxFrameSize = Http2Constants.DEFAULT_PEER_MAX_FRAME_SIZE;
|
|
374
|
+
this.peerInitialWindowSize = Http2Constants.DEFAULT_PEER_WINDOW_SIZE;
|
|
375
|
+
this.connectionSendWindow = Http2Constants.DEFAULT_PEER_WINDOW_SIZE;
|
|
376
|
+
this.streamSendWindows.clear();
|
|
377
|
+
this.sendQueue = [];
|
|
271
378
|
}
|
|
272
379
|
}
|
|
273
380
|
//# sourceMappingURL=remote-xpc-framed-transport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-xpc-framed-transport.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/remote-xpc-framed-transport.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"remote-xpc-framed-transport.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/remote-xpc-framed-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ export interface DecodedXpcMessage {
|
|
|
16
16
|
/** Framing state of the wrapper at the front of a buffer. `desynced` is unrecoverable. */
|
|
17
17
|
export type XpcFramingProbe = {
|
|
18
18
|
status: 'incomplete';
|
|
19
|
+
byteLength?: number;
|
|
19
20
|
} | {
|
|
20
21
|
status: 'desynced';
|
|
21
22
|
reason: string;
|
|
@@ -29,6 +30,7 @@ export type XpcFramingProbe = {
|
|
|
29
30
|
* { flags: Number, id: bigint, body: Object|null }
|
|
30
31
|
*/
|
|
31
32
|
export declare function encodeMessage(message: XPCMessage): Buffer;
|
|
33
|
+
export declare const XPC_WRAPPER_HEADER_SIZE = 24;
|
|
32
34
|
/**
|
|
33
35
|
* Upper bound on a declared body length: the initial receive window, which the peer
|
|
34
36
|
* cannot exceed on a stream because WINDOW_UPDATEs go out only for even streams and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xpc-protocol.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/xpc-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,aAAa,EAAW,MAAM,aAAa,CAAC;AASnE,eAAO,MAAM,SAAS,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAa7C,CAAC;AAGF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,0FAA0F;AAC1F,MAAM,MAAM,eAAe,GACvB;IAAC,MAAM,EAAE,YAAY,CAAA;CAAC,
|
|
1
|
+
{"version":3,"file":"xpc-protocol.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/xpc-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,aAAa,EAAW,MAAM,aAAa,CAAC;AASnE,eAAO,MAAM,SAAS,EAAE;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAa7C,CAAC;AAGF,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,0FAA0F;AAC1F,MAAM,MAAM,eAAe,GACvB;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAC,GAC3C;IAAC,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,GACpC;IAAC,MAAM,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,CAAC;AA0GvC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAkCzD;AAED,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAA8D,CAAC;AAE7F;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAc9D;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CAiB/D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAuC/D"}
|
|
@@ -140,7 +140,7 @@ export function encodeMessage(message) {
|
|
|
140
140
|
writer.writeBuffer(bodyBuffer);
|
|
141
141
|
return writer.concat();
|
|
142
142
|
}
|
|
143
|
-
const XPC_WRAPPER_HEADER_SIZE = 24;
|
|
143
|
+
export const XPC_WRAPPER_HEADER_SIZE = 24;
|
|
144
144
|
/**
|
|
145
145
|
* Upper bound on a declared body length: the initial receive window, which the peer
|
|
146
146
|
* cannot exceed on a stream because WINDOW_UPDATEs go out only for even streams and
|
|
@@ -185,7 +185,7 @@ export function probeXpcFraming(buffer) {
|
|
|
185
185
|
}
|
|
186
186
|
const byteLength = XPC_WRAPPER_HEADER_SIZE + Number(bodyLength);
|
|
187
187
|
if (buffer.length < byteLength) {
|
|
188
|
-
return { status: 'incomplete' };
|
|
188
|
+
return { status: 'incomplete', byteLength };
|
|
189
189
|
}
|
|
190
190
|
return { status: 'ok', byteLength };
|
|
191
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xpc-protocol.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/xpc-protocol.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xpc-protocol.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/xpc-protocol.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -15,6 +15,9 @@ export const Http2Constants = {
|
|
|
15
15
|
DEFAULT_WIN_SIZE_INCR: 16 * 1024 * 1024 - 65535,
|
|
16
16
|
SETTINGS_MAX_CONCURRENT_STREAMS: 0x03,
|
|
17
17
|
SETTINGS_INITIAL_WINDOW_SIZE: 0x04,
|
|
18
|
+
SETTINGS_MAX_FRAME_SIZE: 0x05,
|
|
19
|
+
DEFAULT_PEER_MAX_FRAME_SIZE: 16384,
|
|
20
|
+
DEFAULT_PEER_WINDOW_SIZE: 65535,
|
|
18
21
|
} as const;
|
|
19
22
|
|
|
20
23
|
// XPC Constants
|
|
@@ -11,6 +11,7 @@ export type MessageId = number;
|
|
|
11
11
|
class Handshake {
|
|
12
12
|
private _socket: Socket;
|
|
13
13
|
private readonly _nextMessageId: Record<ChannelId, MessageId>;
|
|
14
|
+
private readonly _dataBytesSent: Record<ChannelId, number>;
|
|
14
15
|
|
|
15
16
|
constructor(socket: Socket) {
|
|
16
17
|
this._socket = socket;
|
|
@@ -18,6 +19,15 @@ class Handshake {
|
|
|
18
19
|
[Http2Constants.ROOT_CHANNEL]: 0,
|
|
19
20
|
[Http2Constants.REPLY_CHANNEL]: 0,
|
|
20
21
|
};
|
|
22
|
+
this._dataBytesSent = {
|
|
23
|
+
[Http2Constants.ROOT_CHANNEL]: 0,
|
|
24
|
+
[Http2Constants.REPLY_CHANNEL]: 0,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** DATA payload bytes sent per stream, so the transport can debit its send windows. */
|
|
29
|
+
get dataBytesSent(): Readonly<Record<ChannelId, number>> {
|
|
30
|
+
return {...this._dataBytesSent};
|
|
21
31
|
}
|
|
22
32
|
|
|
23
33
|
async sendFrame(frame: Buffer): Promise<void> {
|
|
@@ -45,9 +55,13 @@ class Handshake {
|
|
|
45
55
|
body: data,
|
|
46
56
|
};
|
|
47
57
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
58
|
+
await this.sendData(Http2Constants.ROOT_CHANNEL, requestMessage);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
private async sendData(streamId: ChannelId, message: XPCMessage): Promise<void> {
|
|
62
|
+
const encoded: Buffer = encodeMessage(message);
|
|
63
|
+
this._dataBytesSent[streamId] += encoded.length;
|
|
64
|
+
await this.sendFrame(new DataFrame(streamId, encoded, []).serialize());
|
|
51
65
|
}
|
|
52
66
|
|
|
53
67
|
async perform(): Promise<void> {
|
|
@@ -98,9 +112,7 @@ class Handshake {
|
|
|
98
112
|
id: 0,
|
|
99
113
|
body: null,
|
|
100
114
|
};
|
|
101
|
-
|
|
102
|
-
const dataFrame: DataFrame = new DataFrame(Http2Constants.ROOT_CHANNEL, encodedDataMessage, []);
|
|
103
|
-
await this.sendFrame(dataFrame.serialize());
|
|
115
|
+
await this.sendData(Http2Constants.ROOT_CHANNEL, dataMessage);
|
|
104
116
|
this._nextMessageId[Http2Constants.ROOT_CHANNEL]++;
|
|
105
117
|
|
|
106
118
|
// Step 8: Open REPLY_CHANNEL with INIT_HANDSHAKE flags.
|
|
@@ -109,9 +121,7 @@ class Handshake {
|
|
|
109
121
|
id: 0,
|
|
110
122
|
body: null,
|
|
111
123
|
};
|
|
112
|
-
|
|
113
|
-
const replyDataFrame: DataFrame = new DataFrame(Http2Constants.REPLY_CHANNEL, encodedReplyMessage, []);
|
|
114
|
-
await this.sendFrame(replyDataFrame.serialize());
|
|
124
|
+
await this.sendData(Http2Constants.REPLY_CHANNEL, replyMessage);
|
|
115
125
|
this._nextMessageId[Http2Constants.REPLY_CHANNEL]++;
|
|
116
126
|
|
|
117
127
|
// Step 9: Send SETTINGS ACK frame.
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import {Http2Constants} from './constants.js';
|
|
1
2
|
import {InvalidDataError, WindowUpdateFrame} from './handshake-frames.js';
|
|
2
3
|
|
|
3
4
|
const FRAME_HEADER_SIZE = 9;
|
|
4
5
|
const FRAME_TYPE_DATA = 0x00;
|
|
6
|
+
const FRAME_TYPE_SETTINGS = 0x04;
|
|
7
|
+
const FRAME_TYPE_WINDOW_UPDATE = 0x08;
|
|
5
8
|
const FLAG_PADDED = 0x08;
|
|
9
|
+
const SETTINGS_ENTRY_SIZE = 6;
|
|
6
10
|
|
|
7
11
|
export interface ParsedDataFrame {
|
|
8
12
|
readonly streamId: number;
|
|
@@ -10,7 +14,11 @@ export interface ParsedDataFrame {
|
|
|
10
14
|
readonly bodyLen: number;
|
|
11
15
|
}
|
|
12
16
|
|
|
13
|
-
export type ParsedFrame =
|
|
17
|
+
export type ParsedFrame =
|
|
18
|
+
| {readonly type: 'data'; readonly frame: ParsedDataFrame}
|
|
19
|
+
| {readonly type: 'settings'; readonly settings: Record<number, number>}
|
|
20
|
+
| {readonly type: 'windowUpdate'; readonly streamId: number; readonly increment: number}
|
|
21
|
+
| {readonly type: 'other'};
|
|
14
22
|
|
|
15
23
|
/**
|
|
16
24
|
* Incrementally parse HTTP/2 frames from a byte stream (RFC 7540).
|
|
@@ -55,6 +63,12 @@ function parseFrame(buffer: Buffer): ParsedFrame {
|
|
|
55
63
|
const streamId = buffer.readUInt32BE(5) & 0x7fffffff;
|
|
56
64
|
const body = buffer.subarray(FRAME_HEADER_SIZE, FRAME_HEADER_SIZE + length);
|
|
57
65
|
|
|
66
|
+
if (type === FRAME_TYPE_SETTINGS && !(flags & Http2Constants.FLAG_ACK)) {
|
|
67
|
+
return {type: 'settings', settings: parseSettings(body)};
|
|
68
|
+
}
|
|
69
|
+
if (type === FRAME_TYPE_WINDOW_UPDATE) {
|
|
70
|
+
return {type: 'windowUpdate', streamId, increment: body.readUInt32BE(0) & 0x7fffffff};
|
|
71
|
+
}
|
|
58
72
|
if (type !== FRAME_TYPE_DATA) {
|
|
59
73
|
return {type: 'other'};
|
|
60
74
|
}
|
|
@@ -67,6 +81,16 @@ function parseFrame(buffer: Buffer): ParsedFrame {
|
|
|
67
81
|
};
|
|
68
82
|
}
|
|
69
83
|
|
|
84
|
+
/** SETTINGS body is a list of 16-bit identifier / 32-bit value pairs (RFC 7540 §6.5.1). */
|
|
85
|
+
function parseSettings(body: Buffer): Record<number, number> {
|
|
86
|
+
return Object.fromEntries(
|
|
87
|
+
Array.from({length: Math.floor(body.length / SETTINGS_ENTRY_SIZE)}, (_, i) => {
|
|
88
|
+
const offset = i * SETTINGS_ENTRY_SIZE;
|
|
89
|
+
return [body.readUInt16BE(offset), body.readUInt32BE(offset + 2)];
|
|
90
|
+
}),
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
|
|
70
94
|
/**
|
|
71
95
|
* Strip HTTP/2 DATA frame padding (RFC 7540 §6.1).
|
|
72
96
|
* @throws {InvalidDataError} when padding length is invalid
|
|
@@ -3,10 +3,11 @@ import net from 'node:net';
|
|
|
3
3
|
|
|
4
4
|
import {getLogger} from '../logger.js';
|
|
5
5
|
import type {XPCDictionary} from '../types.js';
|
|
6
|
+
import {Http2Constants} from './constants.js';
|
|
6
7
|
import {DataFrame} from './handshake-frames.js';
|
|
7
8
|
import Handshake from './handshake.js';
|
|
8
9
|
import {Http2FrameParser, buildWindowUpdateFrames} from './http2-frame-parser.js';
|
|
9
|
-
import {decodeMessage, probeXpcFraming} from './xpc-protocol.js';
|
|
10
|
+
import {decodeMessage, probeXpcFraming, XPC_WRAPPER_HEADER_SIZE} from './xpc-protocol.js';
|
|
10
11
|
|
|
11
12
|
const log = getLogger('RemoteXpcFramedTransport');
|
|
12
13
|
|
|
@@ -18,6 +19,13 @@ export interface RemoteXpcFramedTransportConnectOptions {
|
|
|
18
19
|
handshakeDelayMs?: number;
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
/** Owned copies of one in-flight XPC message's chunks; `byteLength` is unset until the header is readable. */
|
|
23
|
+
interface PendingXpcMessage {
|
|
24
|
+
chunks: Buffer[];
|
|
25
|
+
length: number;
|
|
26
|
+
byteLength?: number;
|
|
27
|
+
}
|
|
28
|
+
|
|
21
29
|
/**
|
|
22
30
|
* Shared RemoteXPC transport: owns TCP socket lifecycle, HTTP/2/XPC handshake,
|
|
23
31
|
* DATA frame parsing, window updates, and XPC message reassembly.
|
|
@@ -26,10 +34,15 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
26
34
|
private readonly address: [string, number];
|
|
27
35
|
private socket: net.Socket | null = null;
|
|
28
36
|
private frameParser = new Http2FrameParser();
|
|
29
|
-
private pendingXpcData = new Map<number,
|
|
37
|
+
private pendingXpcData = new Map<number, PendingXpcMessage>();
|
|
30
38
|
private connected = false;
|
|
31
39
|
private closing = false;
|
|
32
40
|
private desynced = false;
|
|
41
|
+
private peerMaxFrameSize: number = Http2Constants.DEFAULT_PEER_MAX_FRAME_SIZE;
|
|
42
|
+
private peerInitialWindowSize: number = Http2Constants.DEFAULT_PEER_WINDOW_SIZE;
|
|
43
|
+
private connectionSendWindow: number = Http2Constants.DEFAULT_PEER_WINDOW_SIZE;
|
|
44
|
+
private streamSendWindows = new Map<number, number>();
|
|
45
|
+
private sendQueue: {streamId: number; payload: Buffer}[] = [];
|
|
33
46
|
|
|
34
47
|
constructor(address: [string, number]) {
|
|
35
48
|
super();
|
|
@@ -58,7 +71,7 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
58
71
|
return;
|
|
59
72
|
}
|
|
60
73
|
|
|
61
|
-
this.
|
|
74
|
+
this.resetConnectionState();
|
|
62
75
|
const socket = net.createConnection({
|
|
63
76
|
host: this.address[0],
|
|
64
77
|
port: this.address[1],
|
|
@@ -76,7 +89,11 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
76
89
|
}
|
|
77
90
|
|
|
78
91
|
try {
|
|
79
|
-
|
|
92
|
+
const handshake = new Handshake(socket);
|
|
93
|
+
await handshake.perform();
|
|
94
|
+
for (const [streamId, bytes] of Object.entries(handshake.dataBytesSent)) {
|
|
95
|
+
this.consumeSendWindow(Number(streamId), bytes);
|
|
96
|
+
}
|
|
80
97
|
this.connected = true;
|
|
81
98
|
} catch (error) {
|
|
82
99
|
await this.close();
|
|
@@ -88,7 +105,71 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
88
105
|
if (!this.socket?.writable) {
|
|
89
106
|
throw new Error('RemoteXPC socket is not writable');
|
|
90
107
|
}
|
|
91
|
-
this.
|
|
108
|
+
this.sendQueue.push({streamId, payload});
|
|
109
|
+
this.flushPendingSends();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Writes queued payloads as DATA frames no larger than the peer's max frame size
|
|
114
|
+
* or its send windows. Stops at the first blocked payload so ordering holds.
|
|
115
|
+
*/
|
|
116
|
+
private flushPendingSends(): void {
|
|
117
|
+
const socket = this.socket;
|
|
118
|
+
while (socket?.writable && this.sendQueue.length > 0) {
|
|
119
|
+
const send = this.sendQueue[0];
|
|
120
|
+
const size = Math.min(
|
|
121
|
+
send.payload.length,
|
|
122
|
+
this.peerMaxFrameSize,
|
|
123
|
+
this.sendWindow(0),
|
|
124
|
+
this.sendWindow(send.streamId),
|
|
125
|
+
);
|
|
126
|
+
if (size <= 0 && send.payload.length > 0) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
socket.write(new DataFrame(send.streamId, send.payload.subarray(0, size), []).serialize());
|
|
130
|
+
this.consumeSendWindow(send.streamId, size);
|
|
131
|
+
if (size === send.payload.length) {
|
|
132
|
+
this.sendQueue.shift();
|
|
133
|
+
} else {
|
|
134
|
+
send.payload = send.payload.subarray(size);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/** Stream 0 is the connection-level window. */
|
|
140
|
+
private sendWindow(streamId: number): number {
|
|
141
|
+
return streamId === 0
|
|
142
|
+
? this.connectionSendWindow
|
|
143
|
+
: (this.streamSendWindows.get(streamId) ?? this.peerInitialWindowSize);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
private adjustSendWindow(streamId: number, delta: number): void {
|
|
147
|
+
if (streamId === 0) {
|
|
148
|
+
this.connectionSendWindow += delta;
|
|
149
|
+
} else {
|
|
150
|
+
this.streamSendWindows.set(streamId, this.sendWindow(streamId) + delta);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
private consumeSendWindow(streamId: number, bytes: number): void {
|
|
155
|
+
this.adjustSendWindow(0, -bytes);
|
|
156
|
+
this.adjustSendWindow(streamId, -bytes);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/** A new INITIAL_WINDOW_SIZE shifts every open stream's window by the delta (RFC 7540 §6.9.2). */
|
|
160
|
+
private applyPeerSettings(settings: Record<number, number>): void {
|
|
161
|
+
const maxFrameSize = settings[Http2Constants.SETTINGS_MAX_FRAME_SIZE];
|
|
162
|
+
if (maxFrameSize !== undefined) {
|
|
163
|
+
this.peerMaxFrameSize = maxFrameSize;
|
|
164
|
+
}
|
|
165
|
+
const initialWindowSize = settings[Http2Constants.SETTINGS_INITIAL_WINDOW_SIZE];
|
|
166
|
+
if (initialWindowSize !== undefined) {
|
|
167
|
+
const delta = initialWindowSize - this.peerInitialWindowSize;
|
|
168
|
+
this.peerInitialWindowSize = initialWindowSize;
|
|
169
|
+
for (const [streamId, window] of this.streamSendWindows) {
|
|
170
|
+
this.streamSendWindows.set(streamId, window + delta);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
92
173
|
}
|
|
93
174
|
|
|
94
175
|
async close(): Promise<void> {
|
|
@@ -181,6 +262,16 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
181
262
|
}
|
|
182
263
|
|
|
183
264
|
for (const frame of frames) {
|
|
265
|
+
if (frame.type === 'settings') {
|
|
266
|
+
this.applyPeerSettings(frame.settings);
|
|
267
|
+
this.flushPendingSends();
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
if (frame.type === 'windowUpdate') {
|
|
271
|
+
this.adjustSendWindow(frame.streamId, frame.increment);
|
|
272
|
+
this.flushPendingSends();
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
184
275
|
if (frame.type !== 'data') {
|
|
185
276
|
continue;
|
|
186
277
|
}
|
|
@@ -199,33 +290,63 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
199
290
|
}
|
|
200
291
|
|
|
201
292
|
/**
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
293
|
+
* Accumulates one XPC message per HTTP/2 stream as a chunk list, joined once when
|
|
294
|
+
* complete. Retained chunks are copied so a stalled stream cannot pin the frame
|
|
295
|
+
* parser's buffer; the header is probed from at most its first 24 bytes.
|
|
205
296
|
*/
|
|
206
297
|
private ingestXpcData(streamId: number, chunk: Buffer): void {
|
|
207
|
-
if (this.desynced) {
|
|
298
|
+
if (this.desynced || chunk.length === 0) {
|
|
208
299
|
return;
|
|
209
300
|
}
|
|
210
301
|
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
this.pendingXpcData.delete(streamId);
|
|
302
|
+
const pending = this.pendingXpcData.get(streamId) ?? {chunks: [], length: 0};
|
|
303
|
+
const length = pending.length + chunk.length;
|
|
214
304
|
|
|
215
|
-
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
|
|
305
|
+
if (pending.byteLength === undefined) {
|
|
306
|
+
const head = Buffer.concat([...pending.chunks, chunk], Math.min(length, XPC_WRAPPER_HEADER_SIZE));
|
|
307
|
+
const framing = probeXpcFraming(head);
|
|
308
|
+
if (framing.status === 'desynced') {
|
|
309
|
+
this.handleDesync(framing.reason);
|
|
219
310
|
return;
|
|
220
311
|
}
|
|
312
|
+
pending.byteLength = framing.byteLength;
|
|
313
|
+
}
|
|
314
|
+
if (pending.byteLength === undefined || length < pending.byteLength) {
|
|
315
|
+
pending.chunks.push(Buffer.from(chunk));
|
|
316
|
+
pending.length = length;
|
|
317
|
+
this.pendingXpcData.set(streamId, pending);
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
this.pendingXpcData.delete(streamId);
|
|
322
|
+
this.drainXpcMessages(
|
|
323
|
+
streamId,
|
|
324
|
+
pending.chunks.length === 0 ? chunk : Buffer.concat([...pending.chunks, chunk], length),
|
|
325
|
+
);
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Emits every complete message at the front of `buffer`; an incomplete remainder
|
|
330
|
+
* is re-queued as a copy so it cannot pin the buffer it was sliced from.
|
|
331
|
+
*/
|
|
332
|
+
private drainXpcMessages(streamId: number, buffer: Buffer): void {
|
|
333
|
+
let rest = buffer;
|
|
334
|
+
while (rest.length > 0) {
|
|
335
|
+
const framing = probeXpcFraming(rest);
|
|
221
336
|
if (framing.status === 'desynced') {
|
|
222
337
|
this.handleDesync(framing.reason);
|
|
223
338
|
return;
|
|
224
339
|
}
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
340
|
+
if (framing.status === 'incomplete') {
|
|
341
|
+
this.pendingXpcData.set(streamId, {
|
|
342
|
+
chunks: [Buffer.from(rest)],
|
|
343
|
+
length: rest.length,
|
|
344
|
+
byteLength: framing.byteLength,
|
|
345
|
+
});
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
this.decodeAndEmit(rest.subarray(0, framing.byteLength));
|
|
349
|
+
rest = rest.subarray(framing.byteLength);
|
|
229
350
|
}
|
|
230
351
|
}
|
|
231
352
|
|
|
@@ -306,9 +427,14 @@ export class RemoteXpcFramedTransport extends EventEmitter {
|
|
|
306
427
|
});
|
|
307
428
|
}
|
|
308
429
|
|
|
309
|
-
private
|
|
430
|
+
private resetConnectionState(): void {
|
|
310
431
|
this.frameParser = new Http2FrameParser();
|
|
311
432
|
this.pendingXpcData.clear();
|
|
312
433
|
this.desynced = false;
|
|
434
|
+
this.peerMaxFrameSize = Http2Constants.DEFAULT_PEER_MAX_FRAME_SIZE;
|
|
435
|
+
this.peerInitialWindowSize = Http2Constants.DEFAULT_PEER_WINDOW_SIZE;
|
|
436
|
+
this.connectionSendWindow = Http2Constants.DEFAULT_PEER_WINDOW_SIZE;
|
|
437
|
+
this.streamSendWindows.clear();
|
|
438
|
+
this.sendQueue = [];
|
|
313
439
|
}
|
|
314
440
|
}
|
|
@@ -38,7 +38,7 @@ export interface DecodedXpcMessage {
|
|
|
38
38
|
|
|
39
39
|
/** Framing state of the wrapper at the front of a buffer. `desynced` is unrecoverable. */
|
|
40
40
|
export type XpcFramingProbe =
|
|
41
|
-
| {status: 'incomplete'}
|
|
41
|
+
| {status: 'incomplete'; byteLength?: number}
|
|
42
42
|
| {status: 'desynced'; reason: string}
|
|
43
43
|
| {status: 'ok'; byteLength: number};
|
|
44
44
|
|
|
@@ -187,7 +187,7 @@ export function encodeMessage(message: XPCMessage): Buffer {
|
|
|
187
187
|
return writer.concat();
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
const XPC_WRAPPER_HEADER_SIZE = 24;
|
|
190
|
+
export const XPC_WRAPPER_HEADER_SIZE = 24;
|
|
191
191
|
/**
|
|
192
192
|
* Upper bound on a declared body length: the initial receive window, which the peer
|
|
193
193
|
* cannot exceed on a stream because WINDOW_UPDATEs go out only for even streams and
|
|
@@ -234,7 +234,7 @@ export function probeXpcFraming(buffer: Buffer): XpcFramingProbe {
|
|
|
234
234
|
}
|
|
235
235
|
const byteLength = XPC_WRAPPER_HEADER_SIZE + Number(bodyLength);
|
|
236
236
|
if (buffer.length < byteLength) {
|
|
237
|
-
return {status: 'incomplete'};
|
|
237
|
+
return {status: 'incomplete', byteLength};
|
|
238
238
|
}
|
|
239
239
|
return {status: 'ok', byteLength};
|
|
240
240
|
}
|