appium-ios-remotexpc 5.18.0 → 5.18.2

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.
Files changed (27) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/src/lib/remote-xpc/remote-xpc-framed-transport.d.ts +22 -0
  3. package/build/src/lib/remote-xpc/remote-xpc-framed-transport.d.ts.map +1 -1
  4. package/build/src/lib/remote-xpc/remote-xpc-framed-transport.js +77 -16
  5. package/build/src/lib/remote-xpc/remote-xpc-framed-transport.js.map +1 -1
  6. package/build/src/lib/remote-xpc/rsd-service-catalog-client.d.ts +6 -0
  7. package/build/src/lib/remote-xpc/rsd-service-catalog-client.d.ts.map +1 -1
  8. package/build/src/lib/remote-xpc/rsd-service-catalog-client.js +10 -1
  9. package/build/src/lib/remote-xpc/rsd-service-catalog-client.js.map +1 -1
  10. package/build/src/lib/remote-xpc/service-catalog.d.ts +4 -2
  11. package/build/src/lib/remote-xpc/service-catalog.d.ts.map +1 -1
  12. package/build/src/lib/remote-xpc/service-catalog.js +30 -16
  13. package/build/src/lib/remote-xpc/service-catalog.js.map +1 -1
  14. package/build/src/lib/remote-xpc/xpc-protocol.d.ts +22 -0
  15. package/build/src/lib/remote-xpc/xpc-protocol.d.ts.map +1 -1
  16. package/build/src/lib/remote-xpc/xpc-protocol.js +30 -0
  17. package/build/src/lib/remote-xpc/xpc-protocol.js.map +1 -1
  18. package/build/src/services/ios/core-device/core-device-service.d.ts +5 -5
  19. package/build/src/services/ios/core-device/core-device-service.d.ts.map +1 -1
  20. package/build/src/services/ios/core-device/core-device-service.js +34 -9
  21. package/build/src/services/ios/core-device/core-device-service.js.map +1 -1
  22. package/package.json +7 -7
  23. package/src/lib/remote-xpc/remote-xpc-framed-transport.ts +84 -16
  24. package/src/lib/remote-xpc/rsd-service-catalog-client.ts +11 -1
  25. package/src/lib/remote-xpc/service-catalog.ts +32 -16
  26. package/src/lib/remote-xpc/xpc-protocol.ts +37 -0
  27. package/src/services/ios/core-device/core-device-service.ts +38 -9
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ ## [5.18.2](https://github.com/appium/appium-ios-remotexpc/compare/v5.18.1...v5.18.2) (2026-09-01)
2
+
3
+ ### Miscellaneous Chores
4
+
5
+ * **deps:** bump support & other dependencies ([#313](https://github.com/appium/appium-ios-remotexpc/issues/313)) ([51188ca](https://github.com/appium/appium-ios-remotexpc/commit/51188cafc21a6a8f615f1b7442311d9b26d114b1))
6
+
7
+ ## [5.18.1](https://github.com/appium/appium-ios-remotexpc/compare/v5.18.0...v5.18.1) (2026-09-01)
8
+
9
+ ### Bug Fixes
10
+
11
+ * **remote-xpc:** propagate XPC decode errors instead of stalling ([#312](https://github.com/appium/appium-ios-remotexpc/issues/312)) ([cc009ef](https://github.com/appium/appium-ios-remotexpc/commit/cc009efead694f57fc6aca5a321f2bac49a909f4))
12
+
1
13
  ## [5.18.0](https://github.com/appium/appium-ios-remotexpc/compare/v5.17.2...v5.18.0) (2026-09-01)
2
14
 
3
15
  ### Features
@@ -14,6 +14,7 @@ export declare class RemoteXpcFramedTransport extends EventEmitter {
14
14
  private pendingXpcData;
15
15
  private connected;
16
16
  private closing;
17
+ private desynced;
17
18
  constructor(address: [string, number]);
18
19
  get isConnected(): boolean;
19
20
  /**
@@ -30,9 +31,30 @@ export declare class RemoteXpcFramedTransport extends EventEmitter {
30
31
  sendDataFrame(payload: Buffer, streamId?: number): void;
31
32
  close(): Promise<void>;
32
33
  private waitForSocketConnect;
34
+ /**
35
+ * Handlers ignore a socket that has since been replaced by a reconnect; a closing
36
+ * socket outlives `close()`, and its late events would otherwise hit the new one.
37
+ */
33
38
  private registerSocketHandlers;
34
39
  private handleData;
40
+ /**
41
+ * Reassembles XPC messages for one HTTP/2 stream; streams buffer separately so
42
+ * interleaving cannot fabricate a desync. Framed-but-undecodable messages are
43
+ * skipped, and a retained tail is copied so it cannot pin the parser's buffer.
44
+ */
35
45
  private ingestXpcData;
46
+ /**
47
+ * Latches the whole connection closed: framing alignment is lost and the peer's
48
+ * remaining bytes cannot be trusted on any stream. Teardown starts before the
49
+ * emit so a listener that reconnects synchronously keeps its new socket.
50
+ */
51
+ private handleDesync;
52
+ /**
53
+ * A message that will not decode is reported on `'decodeError'`, never `'error'`:
54
+ * it is not fatal, the messages behind it still arrive, and an unheard `'error'`
55
+ * would be thrown by Node.
56
+ */
57
+ private decodeAndEmit;
36
58
  private shutdownSocket;
37
59
  private resetParsers;
38
60
  }
@@ -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;AAczC,MAAM,WAAW,sCAAsC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;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,CAAmB;IACzC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;gBAEZ,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;IA+B7E,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,IAAI;IAO5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,sBAAsB;IAqB9B,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,YAAY;CAIrB"}
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;AAezC,MAAM,WAAW,sCAAsC;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;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,CAA6B;IACnD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,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;IA+B7E,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI,GAAG,IAAI;IAO5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,OAAO,CAAC,oBAAoB;IAyB5B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAgC9B,OAAO,CAAC,UAAU;IA+BlB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IA0BrB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IASpB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,YAAY;CAKrB"}
@@ -4,7 +4,7 @@ import { getLogger } from '../logger.js';
4
4
  import { DataFrame } from './handshake-frames.js';
5
5
  import Handshake from './handshake.js';
6
6
  import { Http2FrameParser, buildWindowUpdateFrames } from './http2-frame-parser.js';
7
- import { decodeMessage } from './xpc-protocol.js';
7
+ import { decodeMessage, probeXpcFraming } from './xpc-protocol.js';
8
8
  const log = getLogger('RemoteXpcFramedTransport');
9
9
  const DEFAULT_SOCKET_CLOSE_TIMEOUT_MS = 1000;
10
10
  const DEFAULT_SOCKET_END_TIMEOUT_MS = 500;
@@ -16,9 +16,10 @@ export class RemoteXpcFramedTransport extends EventEmitter {
16
16
  address;
17
17
  socket = null;
18
18
  frameParser = new Http2FrameParser();
19
- pendingXpcData = Buffer.alloc(0);
19
+ pendingXpcData = new Map();
20
20
  connected = false;
21
21
  closing = false;
22
+ desynced = false;
22
23
  constructor(address) {
23
24
  super();
24
25
  this.address = address;
@@ -104,12 +105,23 @@ export class RemoteXpcFramedTransport extends EventEmitter {
104
105
  });
105
106
  });
106
107
  }
108
+ /**
109
+ * Handlers ignore a socket that has since been replaced by a reconnect; a closing
110
+ * socket outlives `close()`, and its late events would otherwise hit the new one.
111
+ */
107
112
  registerSocketHandlers(socket) {
113
+ const superseded = () => this.socket !== null && this.socket !== socket;
108
114
  socket.on('data', (data) => {
115
+ if (superseded()) {
116
+ return;
117
+ }
109
118
  const chunk = Buffer.isBuffer(data) ? data : Buffer.from(data, 'hex');
110
119
  this.handleData(chunk);
111
120
  });
112
121
  socket.on('error', (error) => {
122
+ if (superseded()) {
123
+ return;
124
+ }
113
125
  const wasConnected = this.connected;
114
126
  this.connected = false;
115
127
  if (this.closing || !wasConnected) {
@@ -120,6 +132,9 @@ export class RemoteXpcFramedTransport extends EventEmitter {
120
132
  this.emit('error', error);
121
133
  });
122
134
  socket.on('close', () => {
135
+ if (superseded()) {
136
+ return;
137
+ }
123
138
  this.connected = false;
124
139
  this.emit('close');
125
140
  });
@@ -140,28 +155,73 @@ export class RemoteXpcFramedTransport extends EventEmitter {
140
155
  if (frame.type !== 'data') {
141
156
  continue;
142
157
  }
158
+ const socket = this.socket;
159
+ if (this.desynced || !socket) {
160
+ return;
161
+ }
143
162
  const { streamId, data, bodyLen } = frame.frame;
144
163
  for (const windowUpdate of buildWindowUpdateFrames(streamId, bodyLen)) {
145
- this.socket.write(windowUpdate);
164
+ socket.write(windowUpdate);
146
165
  }
147
- this.ingestXpcData(data);
166
+ this.ingestXpcData(streamId, data);
148
167
  }
149
168
  }
150
- ingestXpcData(chunk) {
151
- let pending = Buffer.concat([this.pendingXpcData, chunk]);
152
- this.pendingXpcData = Buffer.alloc(0);
169
+ /**
170
+ * Reassembles XPC messages for one HTTP/2 stream; streams buffer separately so
171
+ * interleaving cannot fabricate a desync. Framed-but-undecodable messages are
172
+ * skipped, and a retained tail is copied so it cannot pin the parser's buffer.
173
+ */
174
+ ingestXpcData(streamId, chunk) {
175
+ if (this.desynced) {
176
+ return;
177
+ }
178
+ const buffered = this.pendingXpcData.get(streamId);
179
+ let pending = buffered ? Buffer.concat([buffered, chunk]) : chunk;
180
+ this.pendingXpcData.delete(streamId);
153
181
  while (pending.length > 0) {
154
- try {
155
- const { message, bytesConsumed } = decodeMessage(pending);
156
- pending = pending.subarray(bytesConsumed);
157
- if (message.body) {
158
- this.emit('message', message.body);
159
- }
182
+ const framing = probeXpcFraming(pending);
183
+ if (framing.status === 'incomplete') {
184
+ this.pendingXpcData.set(streamId, Buffer.from(pending));
185
+ return;
160
186
  }
161
- catch {
162
- this.pendingXpcData = pending;
187
+ if (framing.status === 'desynced') {
188
+ this.handleDesync(framing.reason);
163
189
  return;
164
190
  }
191
+ const message = pending.subarray(0, framing.byteLength);
192
+ pending = pending.subarray(framing.byteLength);
193
+ this.decodeAndEmit(message);
194
+ }
195
+ }
196
+ /**
197
+ * Latches the whole connection closed: framing alignment is lost and the peer's
198
+ * remaining bytes cannot be trusted on any stream. Teardown starts before the
199
+ * emit so a listener that reconnects synchronously keeps its new socket.
200
+ */
201
+ handleDesync(reason) {
202
+ this.desynced = true;
203
+ this.connected = false;
204
+ this.close().catch((error) => {
205
+ log.debug(`Failed to close a desynced RemoteXPC transport: ${error}`);
206
+ });
207
+ this.emit('error', new Error(reason));
208
+ }
209
+ /**
210
+ * A message that will not decode is reported on `'decodeError'`, never `'error'`:
211
+ * it is not fatal, the messages behind it still arrive, and an unheard `'error'`
212
+ * would be thrown by Node.
213
+ */
214
+ decodeAndEmit(message) {
215
+ let body;
216
+ try {
217
+ body = decodeMessage(message).message.body;
218
+ }
219
+ catch (error) {
220
+ this.emit('decodeError', error instanceof Error ? error : new Error(String(error)));
221
+ return;
222
+ }
223
+ if (body) {
224
+ this.emit('message', body);
165
225
  }
166
226
  }
167
227
  shutdownSocket(socket) {
@@ -206,7 +266,8 @@ export class RemoteXpcFramedTransport extends EventEmitter {
206
266
  }
207
267
  resetParsers() {
208
268
  this.frameParser = new Http2FrameParser();
209
- this.pendingXpcData = Buffer.alloc(0);
269
+ this.pendingXpcData.clear();
270
+ this.desynced = false;
210
271
  }
211
272
  }
212
273
  //# 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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"}
@@ -52,6 +52,12 @@ declare class RsdServiceCatalogClient {
52
52
  */
53
53
  findService(serviceName: string): Service;
54
54
  private createConnectSession;
55
+ /**
56
+ * The `'error'` listener is permanent: Node throws an `'error'` that has no
57
+ * listener, and one can still arrive after connect() has settled. `'decodeError'`
58
+ * is a single unreadable message, not a dead connection, so it must not fail the
59
+ * attempt; it logs only the first to stay off the hot path.
60
+ */
55
61
  private registerTransportHandlers;
56
62
  private processIncomingMessage;
57
63
  private connectTransport;
@@ -1 +1 @@
1
- {"version":3,"file":"rsd-service-catalog-client.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/rsd-service-catalog-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AAK9F,sDAAsD;AACtD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AAInD;;;GAGG;AACH,eAAO,MAAM,uCAAuC,QACqC,CAAC;AAC1F,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,QAA0C,CAAC;AAErF,MAAM,WAAW,qCAAqC;IACpD,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,cAAM,uBAAuB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,SAAS,CAAwB;IACzC,4EAA4E;IAC5E,OAAO,CAAC,uBAAuB,CAA6B;IAC5D,mEAAmE;IACnE,OAAO,CAAC,UAAU,CAAU;gBAEhB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IASrC;;;OAGG;IACH,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAE9B;IAED;;OAEG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE,qCAAqC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsBzF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;OAGG;IACH,WAAW,IAAI,OAAO,EAAE;IAOxB;;;OAGG;IACH,eAAe,IAAI,OAAO,EAAE;IAI5B;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAUzC,OAAO,CAAC,oBAAoB;IA0C5B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,sBAAsB;YAWhB,gBAAgB;IAmB9B,OAAO,CAAC,mCAAmC;YAQ7B,iCAAiC;IAgB/C,OAAO,CAAC,2BAA2B;IASnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,YAAY;CAWrB;AAED,OAAO,EAAC,uBAAuB,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAC,CAAC"}
1
+ {"version":3,"file":"rsd-service-catalog-client.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/rsd-service-catalog-client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AAK9F,sDAAsD;AACtD,eAAO,MAAM,6BAA6B,OAAQ,CAAC;AAInD;;;GAGG;AACH,eAAO,MAAM,uCAAuC,QACqC,CAAC;AAC1F,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,QAA0C,CAAC;AAErF,MAAM,WAAW,qCAAqC;IACpD,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AASD,cAAM,uBAAuB;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,YAAY,CAAU;IAC9B,OAAO,CAAC,SAAS,CAAwB;IACzC,4EAA4E;IAC5E,OAAO,CAAC,uBAAuB,CAA6B;IAC5D,mEAAmE;IACnE,OAAO,CAAC,UAAU,CAAU;gBAEhB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IASrC;;;OAGG;IACH,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAE9B;IAED;;OAEG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE,qCAAqC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAsBzF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;OAGG;IACH,WAAW,IAAI,OAAO,EAAE;IAOxB;;;OAGG;IACH,eAAe,IAAI,OAAO,EAAE;IAI5B;;;;OAIG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAUzC,OAAO,CAAC,oBAAoB;IA0C5B;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,sBAAsB;YAWhB,gBAAgB;IAmB9B,OAAO,CAAC,mCAAmC;YAQ7B,iCAAiC;IAgB/C,OAAO,CAAC,2BAA2B;IASnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,YAAY;CAWrB;AAED,OAAO,EAAC,uBAAuB,EAAE,KAAK,OAAO,EAAE,KAAK,gBAAgB,EAAC,CAAC"}
@@ -138,14 +138,23 @@ class RsdServiceCatalogClient {
138
138
  isSettled: () => settled,
139
139
  };
140
140
  }
141
+ /**
142
+ * The `'error'` listener is permanent: Node throws an `'error'` that has no
143
+ * listener, and one can still arrive after connect() has settled. `'decodeError'`
144
+ * is a single unreadable message, not a dead connection, so it must not fail the
145
+ * attempt; it logs only the first to stay off the hot path.
146
+ */
141
147
  registerTransportHandlers(session, transport) {
142
- transport.once('error', (error) => {
148
+ transport.on('error', (error) => {
143
149
  if (!this._isClosing) {
144
150
  log.error(`Connection error: ${error}`);
145
151
  }
146
152
  this._isConnected = false;
147
153
  session.settleFailure(error);
148
154
  });
155
+ transport.once('decodeError', (error) => {
156
+ log.debug(`Skipped an undecodable RSD message: ${error.message}`);
157
+ });
149
158
  transport.on('message', (body) => this.processIncomingMessage(session, body));
150
159
  transport.once('close', () => {
151
160
  this._isConnected = false;
@@ -1 +1 @@
1
- {"version":3,"file":"rsd-service-catalog-client.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/rsd-service-catalog-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rsd-service-catalog-client.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/rsd-service-catalog-client.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,11 @@ export interface ServicesResponse {
12
12
  */
13
13
  export declare class ServiceCatalogCollector {
14
14
  private previousFrameData;
15
+ private desynced;
15
16
  /**
16
- * Feed one DATA frame payload. Returns the catalog when a complete XPC
17
- * message containing `Services` has been decoded.
17
+ * Feed one DATA frame payload. Returns the catalog once a complete XPC message
18
+ * carrying `Services` decodes. Framed-but-undecodable messages are skipped.
19
+ * @throws once the stream desyncs, and on every later call — no payload can resynchronise it
18
20
  */
19
21
  ingestDataPayload(chunk: Buffer): ServicesResponse | null;
20
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"service-catalog.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/service-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,iBAAiB,CAA2B;IAEpD;;;OAGG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;CA0B1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAuBnG"}
1
+ {"version":3,"file":"service-catalog.d.ts","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/service-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAG/C,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;OAIG;IACH,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;CA+B1D;AAWD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,GAAG,IAAI,CAuBnG"}
@@ -1,38 +1,52 @@
1
- import { decodeMessage } from './xpc-protocol.js';
1
+ import { decodeMessage, probeXpcFraming } from './xpc-protocol.js';
2
2
  /**
3
3
  * Reassemble length-prefixed XPC payloads from HTTP/2 DATA frames and extract
4
4
  * the service catalog once the full handshake message is available.
5
5
  */
6
6
  export class ServiceCatalogCollector {
7
7
  previousFrameData = Buffer.alloc(0);
8
+ desynced = false;
8
9
  /**
9
- * Feed one DATA frame payload. Returns the catalog when a complete XPC
10
- * message containing `Services` has been decoded.
10
+ * Feed one DATA frame payload. Returns the catalog once a complete XPC message
11
+ * carrying `Services` decodes. Framed-but-undecodable messages are skipped.
12
+ * @throws once the stream desyncs, and on every later call — no payload can resynchronise it
11
13
  */
12
14
  ingestDataPayload(chunk) {
15
+ if (this.desynced) {
16
+ throw new Error('XPC stream is desynced');
17
+ }
13
18
  let pending = Buffer.concat([this.previousFrameData, chunk]);
14
19
  this.previousFrameData = Buffer.alloc(0);
15
20
  while (pending.length > 0) {
16
- try {
17
- const { message, bytesConsumed } = decodeMessage(pending);
18
- pending = pending.subarray(bytesConsumed);
19
- if (message.body === null || message.body === undefined) {
20
- continue;
21
- }
22
- const catalog = servicesFromXpcBody(message.body);
23
- if (catalog) {
24
- this.previousFrameData = pending;
25
- return catalog;
26
- }
27
- }
28
- catch {
21
+ const framing = probeXpcFraming(pending);
22
+ if (framing.status === 'incomplete') {
29
23
  this.previousFrameData = pending;
30
24
  return null;
31
25
  }
26
+ if (framing.status === 'desynced') {
27
+ this.desynced = true;
28
+ throw new Error(framing.reason);
29
+ }
30
+ const message = pending.subarray(0, framing.byteLength);
31
+ pending = pending.subarray(framing.byteLength);
32
+ const catalog = extractCatalog(message);
33
+ if (catalog) {
34
+ this.previousFrameData = pending;
35
+ return catalog;
36
+ }
32
37
  }
33
38
  return null;
34
39
  }
35
40
  }
41
+ /** Catalog carried by one complete XPC message; null if it carries none or will not decode. */
42
+ function extractCatalog(message) {
43
+ try {
44
+ return servicesFromXpcBody(decodeMessage(message).message.body);
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ }
36
50
  /**
37
51
  * Build the service list from a decoded RSD handshake body (`peer_info`).
38
52
  */
@@ -1 +1 @@
1
- {"version":3,"file":"service-catalog.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/service-catalog.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAWhD;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAC1B,iBAAiB,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEpD;;;OAGG;IACH,iBAAiB,CAAC,KAAa;QAC7B,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEzC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,EAAC,OAAO,EAAE,aAAa,EAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;gBACxD,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAE1C,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACxD,SAAS;gBACX,CAAC;gBAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClD,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;oBACjC,OAAO,OAAO,CAAC;gBACjB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAsC;IACxE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;IACnC,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7D,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAI,IAAsB,CAAC,IAAI,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC;YACZ,WAAW;YACX,IAAI,EAAE,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;SAC7E,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"service-catalog.js","sourceRoot":"","sources":["../../../../src/lib/remote-xpc/service-catalog.ts"],"names":[],"mappings":"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"}
@@ -13,17 +13,39 @@ export interface DecodedXpcMessage {
13
13
  /** Bytes consumed from `buffer` (may be less than `buffer.length`). */
14
14
  bytesConsumed: number;
15
15
  }
16
+ /** Framing state of the wrapper at the front of a buffer. `desynced` is unrecoverable. */
17
+ export type XpcFramingProbe = {
18
+ status: 'incomplete';
19
+ } | {
20
+ status: 'desynced';
21
+ reason: string;
22
+ } | {
23
+ status: 'ok';
24
+ byteLength: number;
25
+ };
16
26
  /**
17
27
  * Encodes a message object into an XPC Buffer.
18
28
  * A message is an object like:
19
29
  * { flags: Number, id: bigint, body: Object|null }
20
30
  */
21
31
  export declare function encodeMessage(message: XPCMessage): Buffer;
32
+ /**
33
+ * Upper bound on a declared body length: the initial receive window, which the peer
34
+ * cannot exceed on a stream because WINDOW_UPDATEs go out only for even streams and
35
+ * RemoteXPC uses odd ones. Anything larger is corrupt framing, not a partial read.
36
+ */
37
+ export declare const MAX_XPC_BODY_SIZE: bigint;
22
38
  /**
23
39
  * Returns the total byte length of one length-prefixed XPC wrapper in `buffer`.
24
40
  * @throws if the header is missing, invalid, or the buffer is shorter than the message
25
41
  */
26
42
  export declare function getXpcMessageByteLength(buffer: Buffer): number;
43
+ /**
44
+ * Non-throwing framing check: separates "wait for more bytes" from "stream unusable".
45
+ * An oversized declared length is desync, not a partial read — treating it as
46
+ * incomplete would buffer the rest of the stream forever.
47
+ */
48
+ export declare function probeXpcFraming(buffer: Buffer): XpcFramingProbe;
27
49
  /**
28
50
  * Decodes an XPC Buffer into a message object.
29
51
  * (Keep this function if you plan to handle incoming messages.)
@@ -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;AAQnE,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;AA0GD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAkCzD;AAID;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAc9D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAuC/D"}
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,GACtB;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;AAGD;;;;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"}
@@ -1,3 +1,4 @@
1
+ import { Http2Constants } from './constants.js';
1
2
  import { XPCUUID } from './xpc-uuid.js';
2
3
  // Constants for XPC protocol.
3
4
  const BODY_VERSION = 0x00000005;
@@ -140,6 +141,12 @@ export function encodeMessage(message) {
140
141
  return writer.concat();
141
142
  }
142
143
  const XPC_WRAPPER_HEADER_SIZE = 24;
144
+ /**
145
+ * Upper bound on a declared body length: the initial receive window, which the peer
146
+ * cannot exceed on a stream because WINDOW_UPDATEs go out only for even streams and
147
+ * RemoteXPC uses odd ones. Anything larger is corrupt framing, not a partial read.
148
+ */
149
+ export const MAX_XPC_BODY_SIZE = BigInt(Http2Constants.DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE);
143
150
  /**
144
151
  * Returns the total byte length of one length-prefixed XPC wrapper in `buffer`.
145
152
  * @throws if the header is missing, invalid, or the buffer is shorter than the message
@@ -159,6 +166,29 @@ export function getXpcMessageByteLength(buffer) {
159
166
  }
160
167
  return total;
161
168
  }
169
+ /**
170
+ * Non-throwing framing check: separates "wait for more bytes" from "stream unusable".
171
+ * An oversized declared length is desync, not a partial read — treating it as
172
+ * incomplete would buffer the rest of the stream forever.
173
+ */
174
+ export function probeXpcFraming(buffer) {
175
+ if (buffer.length < XPC_WRAPPER_HEADER_SIZE) {
176
+ return { status: 'incomplete' };
177
+ }
178
+ const magic = buffer.readUInt32LE(0);
179
+ if (magic !== WRAPPER_MAGIC) {
180
+ return { status: 'desynced', reason: `Invalid XPC wrapper magic: 0x${magic.toString(16)}` };
181
+ }
182
+ const bodyLength = buffer.readBigUInt64LE(8);
183
+ if (bodyLength > MAX_XPC_BODY_SIZE) {
184
+ return { status: 'desynced', reason: `XPC body length ${bodyLength} exceeds ${MAX_XPC_BODY_SIZE}` };
185
+ }
186
+ const byteLength = XPC_WRAPPER_HEADER_SIZE + Number(bodyLength);
187
+ if (buffer.length < byteLength) {
188
+ return { status: 'incomplete' };
189
+ }
190
+ return { status: 'ok', byteLength };
191
+ }
162
192
  /**
163
193
  * Decodes an XPC Buffer into a message object.
164
194
  * (Keep this function if you plan to handle incoming messages.)
@@ -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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"}
@@ -57,11 +57,11 @@ export declare abstract class CoreDeviceService extends BaseService {
57
57
  protected getTransport(): Promise<RemoteXpcFramedTransport>;
58
58
  private enqueueInvocation;
59
59
  /**
60
- * Creates a transport and attaches a permanent `'error'` listener. The
61
- * framed transport is an EventEmitter; an `'error'` emitted with no listener
62
- * is thrown by Node and crashes the process. `invoke()` registers a per-call
63
- * listener, but fire-and-forget `send()` does not so this guarantees a
64
- * listener always exists for the transport's lifetime.
60
+ * Creates a transport that already carries a permanent `'error'` listener.
61
+ * Attaching it after connect() would leave the handshake window uncovered:
62
+ * frames arriving there can emit `'error'`, and Node throws one that has no
63
+ * listener. Attaching is idempotent, so an override of createTransport() that
64
+ * already attached is not double-wired.
65
65
  */
66
66
  private newTransport;
67
67
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"core-device-service.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/core-device/core-device-service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,wBAAwB,EAAC,MAAM,wDAAwD,CAAC;AAEhG,OAAO,KAAK,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AA6B/C,MAAM,WAAW,uBAAuB;IACtC,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa;CAKtD;AAED;;;;;;;;;;;GAWG;AACH,8BAAsB,iBAAkB,SAAQ,WAAW;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,SAAS,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI,CAAQ;IAC5D,SAAS,CAAC,aAAa,SAAK;IAE5B,4EAA4E;IAC5E,OAAO,CAAC,WAAW,CAAuC;gBAE9C,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAKvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;;OAGG;cACa,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD;;;;OAIG;cACa,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,aAAa,CAAC;IAI/G;;;;;;OAMG;cACa,MAAM,CACpB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,KAAK,GAAE,aAAkB,EACzB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,QAAQ,CAAC;cAIJ,eAAe,IAAI,OAAO,CAAC,wBAAwB,CAAC;cAMpD,YAAY,IAAI,OAAO,CAAC,wBAAwB,CAAC;YAOnD,iBAAiB;IAuB/B;;;;;;OAMG;YACW,YAAY;IAS1B;;;OAGG;YACW,gBAAgB;YAUhB,cAAc;YAmCd,mBAAmB;IA0BjC,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,eAAe;CAoDxB;AAkCD,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"core-device-service.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/core-device/core-device-service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,wBAAwB,EAAC,MAAM,wDAAwD,CAAC;AAEhG,OAAO,KAAK,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAC;AAgC/C,MAAM,WAAW,uBAAuB;IACtC,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;gBAEtB,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,aAAa;CAKtD;AAED;;;;;;;;;;;GAWG;AACH,8BAAsB,iBAAkB,SAAQ,WAAW;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAErC,SAAS,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI,CAAQ;IAC5D,SAAS,CAAC,aAAa,SAAK;IAE5B,4EAA4E;IAC5E,OAAO,CAAC,WAAW,CAAuC;gBAE9C,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAKvC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;;OAGG;cACa,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD;;;;OAIG;cACa,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,GAAE,uBAA4B,GAAG,OAAO,CAAC,aAAa,CAAC;IAI/G;;;;;;OAMG;cACa,MAAM,CACpB,iBAAiB,CAAC,EAAE,MAAM,EAC1B,KAAK,GAAE,aAAkB,EACzB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,QAAQ,CAAC;cAIJ,eAAe,IAAI,OAAO,CAAC,wBAAwB,CAAC;cAOpD,YAAY,IAAI,OAAO,CAAC,wBAAwB,CAAC;YAOnD,iBAAiB;IAuB/B;;;;;;OAMG;YACW,YAAY;IAO1B;;;OAGG;YACW,gBAAgB;YAUhB,cAAc;YAmCd,mBAAmB;IA0BjC,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,eAAe;CA4DxB;AAqDD,eAAe,iBAAiB,CAAC"}
@@ -5,6 +5,8 @@ import { RemoteXpcFramedTransport } from '../../../lib/remote-xpc/remote-xpc-fra
5
5
  import { encodeMessage } from '../../../lib/remote-xpc/xpc-protocol.js';
6
6
  import { BaseService } from '../base-service.js';
7
7
  const log = getLogger('CoreDeviceService');
8
+ /** Transports already carrying the permanent failure loggers. */
9
+ const loggedTransports = new WeakSet();
8
10
  const CONNECT_TIMEOUT_MS = 10_000;
9
11
  const DEFAULT_INVOKE_TIMEOUT_MS = 30_000;
10
12
  /**
@@ -99,6 +101,7 @@ export class CoreDeviceService extends BaseService {
99
101
  }
100
102
  async createTransport() {
101
103
  const transport = new RemoteXpcFramedTransport(await this.resolveServiceAddress(this.serviceName));
104
+ attachTransportLogging(transport);
102
105
  await transport.connect({ timeoutMs: CONNECT_TIMEOUT_MS });
103
106
  return transport;
104
107
  }
@@ -131,17 +134,15 @@ export class CoreDeviceService extends BaseService {
131
134
  }
132
135
  }
133
136
  /**
134
- * Creates a transport and attaches a permanent `'error'` listener. The
135
- * framed transport is an EventEmitter; an `'error'` emitted with no listener
136
- * is thrown by Node and crashes the process. `invoke()` registers a per-call
137
- * listener, but fire-and-forget `send()` does not so this guarantees a
138
- * listener always exists for the transport's lifetime.
137
+ * Creates a transport that already carries a permanent `'error'` listener.
138
+ * Attaching it after connect() would leave the handshake window uncovered:
139
+ * frames arriving there can emit `'error'`, and Node throws one that has no
140
+ * listener. Attaching is idempotent, so an override of createTransport() that
141
+ * already attached is not double-wired.
139
142
  */
140
143
  async newTransport() {
141
144
  const transport = await this.createTransport();
142
- transport.on('error', (error) => {
143
- log.debug(`CoreDevice transport error: ${error.message}`);
144
- });
145
+ attachTransportLogging(transport);
145
146
  this.nextMessageId = 1;
146
147
  return transport;
147
148
  }
@@ -211,6 +212,7 @@ export class CoreDeviceService extends BaseService {
211
212
  waitForResponse(transport, timeoutMs, featureIdentifier) {
212
213
  return new Promise((resolve, reject) => {
213
214
  let settled = false;
215
+ let lastDecodeError;
214
216
  const cleanup = () => {
215
217
  if (settled) {
216
218
  return;
@@ -218,6 +220,7 @@ export class CoreDeviceService extends BaseService {
218
220
  settled = true;
219
221
  clearTimeout(timer);
220
222
  transport.off('message', onMessage);
223
+ transport.off('decodeError', onDecodeError);
221
224
  transport.off('error', onError);
222
225
  transport.off('close', onClose);
223
226
  };
@@ -229,6 +232,9 @@ export class CoreDeviceService extends BaseService {
229
232
  cleanup();
230
233
  resolve(body);
231
234
  };
235
+ const onDecodeError = (error) => {
236
+ lastDecodeError = error;
237
+ };
232
238
  const onError = (error) => {
233
239
  cleanup();
234
240
  reject(error);
@@ -239,14 +245,33 @@ export class CoreDeviceService extends BaseService {
239
245
  };
240
246
  const timer = setTimeout(() => {
241
247
  cleanup();
242
- reject(new CoreDeviceError(`CoreDevice invocation '${featureIdentifier ?? '<none>'}' timed out after ${timeoutMs}ms`));
248
+ const cause = lastDecodeError ? `; last message was undecodable: ${lastDecodeError.message}` : '';
249
+ reject(new CoreDeviceError(`CoreDevice invocation '${featureIdentifier ?? '<none>'}' timed out after ${timeoutMs}ms${cause}`));
243
250
  }, timeoutMs);
244
251
  transport.on('message', onMessage);
252
+ transport.on('decodeError', onDecodeError);
245
253
  transport.once('error', onError);
246
254
  transport.once('close', onClose);
247
255
  });
248
256
  }
249
257
  }
258
+ /**
259
+ * Attaches the permanent failure listeners once per transport. An `'error'` with
260
+ * no listener is thrown by Node and crashes the process, and fire-and-forget
261
+ * `send()` registers no per-call listener of its own.
262
+ */
263
+ function attachTransportLogging(transport) {
264
+ if (loggedTransports.has(transport)) {
265
+ return;
266
+ }
267
+ loggedTransports.add(transport);
268
+ transport.on('error', (error) => {
269
+ log.debug(`CoreDevice transport error: ${error.message}`);
270
+ });
271
+ transport.once('decodeError', (error) => {
272
+ log.debug(`CoreDevice skipped an undecodable message: ${error.message}`);
273
+ });
274
+ }
250
275
  /**
251
276
  * Builds a descriptive error from a CoreDevice reply that carries no output.
252
277
  * The device returns an `NSError`-shaped `CoreDevice.error` whose `userInfo`
@@ -1 +1 @@
1
- {"version":3,"file":"core-device-service.js","sourceRoot":"","sources":["../../../../../src/services/ios/core-device/core-device-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core-device-service.js","sourceRoot":"","sources":["../../../../../src/services/ios/core-device/core-device-service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appium-ios-remotexpc",
3
- "version": "5.18.0",
3
+ "version": "5.18.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "bugs": {
@@ -90,16 +90,16 @@
90
90
  "tunnel-creation": "sudo node scripts/tunnel-creation.mjs"
91
91
  },
92
92
  "dependencies": {
93
- "@appium/strongbox": "^1.1.2",
94
- "@appium/support": "^7.2.2",
93
+ "@appium/strongbox": "^2.0.0",
94
+ "@appium/support": "^7.2.6",
95
95
  "@xmldom/xmldom": "^0.x",
96
- "appium-ios-tuntap": "^2.0.0",
96
+ "appium-ios-tuntap": "^2.0.1",
97
97
  "async-lock": "^1.4.1",
98
- "axios": "^1.15.1",
98
+ "axios": "^1.18.0",
99
99
  "commander": "^14.0.1",
100
- "minimatch": "^10.1.1",
100
+ "minimatch": "^10.2.3",
101
101
  "node-devicectl": "^2.0.0",
102
- "path-to-regexp": "^8.3.0"
102
+ "path-to-regexp": "^8.4.0"
103
103
  },
104
104
  "devDependencies": {
105
105
  "@appium/oxc-config": "^1.1.0",
@@ -2,10 +2,11 @@ import {EventEmitter} from 'node:events';
2
2
  import net from 'node:net';
3
3
 
4
4
  import {getLogger} from '../logger.js';
5
+ import type {XPCDictionary} from '../types.js';
5
6
  import {DataFrame} from './handshake-frames.js';
6
7
  import Handshake from './handshake.js';
7
8
  import {Http2FrameParser, buildWindowUpdateFrames} from './http2-frame-parser.js';
8
- import {decodeMessage} from './xpc-protocol.js';
9
+ import {decodeMessage, probeXpcFraming} from './xpc-protocol.js';
9
10
 
10
11
  const log = getLogger('RemoteXpcFramedTransport');
11
12
 
@@ -25,9 +26,10 @@ export class RemoteXpcFramedTransport extends EventEmitter {
25
26
  private readonly address: [string, number];
26
27
  private socket: net.Socket | null = null;
27
28
  private frameParser = new Http2FrameParser();
28
- private pendingXpcData = Buffer.alloc(0);
29
+ private pendingXpcData = new Map<number, Buffer>();
29
30
  private connected = false;
30
31
  private closing = false;
32
+ private desynced = false;
31
33
 
32
34
  constructor(address: [string, number]) {
33
35
  super();
@@ -129,12 +131,24 @@ export class RemoteXpcFramedTransport extends EventEmitter {
129
131
  });
130
132
  }
131
133
 
134
+ /**
135
+ * Handlers ignore a socket that has since been replaced by a reconnect; a closing
136
+ * socket outlives `close()`, and its late events would otherwise hit the new one.
137
+ */
132
138
  private registerSocketHandlers(socket: net.Socket): void {
139
+ const superseded = (): boolean => this.socket !== null && this.socket !== socket;
140
+
133
141
  socket.on('data', (data: Buffer | string) => {
142
+ if (superseded()) {
143
+ return;
144
+ }
134
145
  const chunk = Buffer.isBuffer(data) ? data : Buffer.from(data, 'hex');
135
146
  this.handleData(chunk);
136
147
  });
137
148
  socket.on('error', (error: Error) => {
149
+ if (superseded()) {
150
+ return;
151
+ }
138
152
  const wasConnected = this.connected;
139
153
  this.connected = false;
140
154
  if (this.closing || !wasConnected) {
@@ -145,6 +159,9 @@ export class RemoteXpcFramedTransport extends EventEmitter {
145
159
  this.emit('error', error);
146
160
  });
147
161
  socket.on('close', () => {
162
+ if (superseded()) {
163
+ return;
164
+ }
148
165
  this.connected = false;
149
166
  this.emit('close');
150
167
  });
@@ -168,29 +185,79 @@ export class RemoteXpcFramedTransport extends EventEmitter {
168
185
  continue;
169
186
  }
170
187
 
188
+ const socket = this.socket;
189
+ if (this.desynced || !socket) {
190
+ return;
191
+ }
192
+
171
193
  const {streamId, data, bodyLen} = frame.frame;
172
194
  for (const windowUpdate of buildWindowUpdateFrames(streamId, bodyLen)) {
173
- this.socket.write(windowUpdate);
195
+ socket.write(windowUpdate);
174
196
  }
175
- this.ingestXpcData(data);
197
+ this.ingestXpcData(streamId, data);
176
198
  }
177
199
  }
178
200
 
179
- private ingestXpcData(chunk: Buffer): void {
180
- let pending = Buffer.concat([this.pendingXpcData, chunk]);
181
- this.pendingXpcData = Buffer.alloc(0);
201
+ /**
202
+ * Reassembles XPC messages for one HTTP/2 stream; streams buffer separately so
203
+ * interleaving cannot fabricate a desync. Framed-but-undecodable messages are
204
+ * skipped, and a retained tail is copied so it cannot pin the parser's buffer.
205
+ */
206
+ private ingestXpcData(streamId: number, chunk: Buffer): void {
207
+ if (this.desynced) {
208
+ return;
209
+ }
210
+
211
+ const buffered = this.pendingXpcData.get(streamId);
212
+ let pending = buffered ? Buffer.concat([buffered, chunk]) : chunk;
213
+ this.pendingXpcData.delete(streamId);
182
214
 
183
215
  while (pending.length > 0) {
184
- try {
185
- const {message, bytesConsumed} = decodeMessage(pending);
186
- pending = pending.subarray(bytesConsumed);
187
- if (message.body) {
188
- this.emit('message', message.body);
189
- }
190
- } catch {
191
- this.pendingXpcData = pending;
216
+ const framing = probeXpcFraming(pending);
217
+ if (framing.status === 'incomplete') {
218
+ this.pendingXpcData.set(streamId, Buffer.from(pending));
192
219
  return;
193
220
  }
221
+ if (framing.status === 'desynced') {
222
+ this.handleDesync(framing.reason);
223
+ return;
224
+ }
225
+
226
+ const message = pending.subarray(0, framing.byteLength);
227
+ pending = pending.subarray(framing.byteLength);
228
+ this.decodeAndEmit(message);
229
+ }
230
+ }
231
+
232
+ /**
233
+ * Latches the whole connection closed: framing alignment is lost and the peer's
234
+ * remaining bytes cannot be trusted on any stream. Teardown starts before the
235
+ * emit so a listener that reconnects synchronously keeps its new socket.
236
+ */
237
+ private handleDesync(reason: string): void {
238
+ this.desynced = true;
239
+ this.connected = false;
240
+ this.close().catch((error: unknown) => {
241
+ log.debug(`Failed to close a desynced RemoteXPC transport: ${error}`);
242
+ });
243
+ this.emit('error', new Error(reason));
244
+ }
245
+
246
+ /**
247
+ * A message that will not decode is reported on `'decodeError'`, never `'error'`:
248
+ * it is not fatal, the messages behind it still arrive, and an unheard `'error'`
249
+ * would be thrown by Node.
250
+ */
251
+ private decodeAndEmit(message: Buffer): void {
252
+ let body: XPCDictionary | null | undefined;
253
+ try {
254
+ body = decodeMessage(message).message.body;
255
+ } catch (error) {
256
+ this.emit('decodeError', error instanceof Error ? error : new Error(String(error)));
257
+ return;
258
+ }
259
+ if (body) {
260
+ this.emit('message', body);
194
261
  }
195
262
  }
196
263
 
@@ -241,6 +308,7 @@ export class RemoteXpcFramedTransport extends EventEmitter {
241
308
 
242
309
  private resetParsers(): void {
243
310
  this.frameParser = new Http2FrameParser();
244
- this.pendingXpcData = Buffer.alloc(0);
311
+ this.pendingXpcData.clear();
312
+ this.desynced = false;
245
313
  }
246
314
  }
@@ -176,8 +176,14 @@ class RsdServiceCatalogClient {
176
176
  };
177
177
  }
178
178
 
179
+ /**
180
+ * The `'error'` listener is permanent: Node throws an `'error'` that has no
181
+ * listener, and one can still arrive after connect() has settled. `'decodeError'`
182
+ * is a single unreadable message, not a dead connection, so it must not fail the
183
+ * attempt; it logs only the first to stay off the hot path.
184
+ */
179
185
  private registerTransportHandlers(session: ConnectSession, transport: RemoteXpcFramedTransport): void {
180
- transport.once('error', (error: Error) => {
186
+ transport.on('error', (error: Error) => {
181
187
  if (!this._isClosing) {
182
188
  log.error(`Connection error: ${error}`);
183
189
  }
@@ -185,6 +191,10 @@ class RsdServiceCatalogClient {
185
191
  session.settleFailure(error);
186
192
  });
187
193
 
194
+ transport.once('decodeError', (error: Error) => {
195
+ log.debug(`Skipped an undecodable RSD message: ${error.message}`);
196
+ });
197
+
188
198
  transport.on('message', (body) => this.processIncomingMessage(session, body));
189
199
 
190
200
  transport.once('close', () => {
@@ -1,5 +1,5 @@
1
1
  import type {XPCDictionary} from '../types.js';
2
- import {decodeMessage} from './xpc-protocol.js';
2
+ import {decodeMessage, probeXpcFraming} from './xpc-protocol.js';
3
3
 
4
4
  export interface Service {
5
5
  serviceName: string;
@@ -16,32 +16,39 @@ export interface ServicesResponse {
16
16
  */
17
17
  export class ServiceCatalogCollector {
18
18
  private previousFrameData: Buffer = Buffer.alloc(0);
19
+ private desynced = false;
19
20
 
20
21
  /**
21
- * Feed one DATA frame payload. Returns the catalog when a complete XPC
22
- * message containing `Services` has been decoded.
22
+ * Feed one DATA frame payload. Returns the catalog once a complete XPC message
23
+ * carrying `Services` decodes. Framed-but-undecodable messages are skipped.
24
+ * @throws once the stream desyncs, and on every later call — no payload can resynchronise it
23
25
  */
24
26
  ingestDataPayload(chunk: Buffer): ServicesResponse | null {
27
+ if (this.desynced) {
28
+ throw new Error('XPC stream is desynced');
29
+ }
30
+
25
31
  let pending = Buffer.concat([this.previousFrameData, chunk]);
26
32
  this.previousFrameData = Buffer.alloc(0);
27
33
 
28
34
  while (pending.length > 0) {
29
- try {
30
- const {message, bytesConsumed} = decodeMessage(pending);
31
- pending = pending.subarray(bytesConsumed);
35
+ const framing = probeXpcFraming(pending);
36
+ if (framing.status === 'incomplete') {
37
+ this.previousFrameData = pending;
38
+ return null;
39
+ }
40
+ if (framing.status === 'desynced') {
41
+ this.desynced = true;
42
+ throw new Error(framing.reason);
43
+ }
32
44
 
33
- if (message.body === null || message.body === undefined) {
34
- continue;
35
- }
45
+ const message = pending.subarray(0, framing.byteLength);
46
+ pending = pending.subarray(framing.byteLength);
36
47
 
37
- const catalog = servicesFromXpcBody(message.body);
38
- if (catalog) {
39
- this.previousFrameData = pending;
40
- return catalog;
41
- }
42
- } catch {
48
+ const catalog = extractCatalog(message);
49
+ if (catalog) {
43
50
  this.previousFrameData = pending;
44
- return null;
51
+ return catalog;
45
52
  }
46
53
  }
47
54
 
@@ -49,6 +56,15 @@ export class ServiceCatalogCollector {
49
56
  }
50
57
  }
51
58
 
59
+ /** Catalog carried by one complete XPC message; null if it carries none or will not decode. */
60
+ function extractCatalog(message: Buffer): ServicesResponse | null {
61
+ try {
62
+ return servicesFromXpcBody(decodeMessage(message).message.body);
63
+ } catch {
64
+ return null;
65
+ }
66
+ }
67
+
52
68
  /**
53
69
  * Build the service list from a decoded RSD handshake body (`peer_info`).
54
70
  */
@@ -1,4 +1,5 @@
1
1
  import type {XPCArray, XPCDictionary, XPCValue} from '../types.js';
2
+ import {Http2Constants} from './constants.js';
2
3
  import {XPCUUID} from './xpc-uuid.js';
3
4
 
4
5
  // Constants for XPC protocol.
@@ -35,6 +36,12 @@ export interface DecodedXpcMessage {
35
36
  bytesConsumed: number;
36
37
  }
37
38
 
39
+ /** Framing state of the wrapper at the front of a buffer. `desynced` is unrecoverable. */
40
+ export type XpcFramingProbe =
41
+ | {status: 'incomplete'}
42
+ | {status: 'desynced'; reason: string}
43
+ | {status: 'ok'; byteLength: number};
44
+
38
45
  // A simple binary writer that collects Buffer chunks.
39
46
  class Writer {
40
47
  private chunks: Buffer[] = [];
@@ -181,6 +188,12 @@ export function encodeMessage(message: XPCMessage): Buffer {
181
188
  }
182
189
 
183
190
  const XPC_WRAPPER_HEADER_SIZE = 24;
191
+ /**
192
+ * Upper bound on a declared body length: the initial receive window, which the peer
193
+ * cannot exceed on a stream because WINDOW_UPDATEs go out only for even streams and
194
+ * RemoteXPC uses odd ones. Anything larger is corrupt framing, not a partial read.
195
+ */
196
+ export const MAX_XPC_BODY_SIZE = BigInt(Http2Constants.DEFAULT_SETTINGS_INITIAL_WINDOW_SIZE);
184
197
 
185
198
  /**
186
199
  * Returns the total byte length of one length-prefixed XPC wrapper in `buffer`.
@@ -202,6 +215,30 @@ export function getXpcMessageByteLength(buffer: Buffer): number {
202
215
  return total;
203
216
  }
204
217
 
218
+ /**
219
+ * Non-throwing framing check: separates "wait for more bytes" from "stream unusable".
220
+ * An oversized declared length is desync, not a partial read — treating it as
221
+ * incomplete would buffer the rest of the stream forever.
222
+ */
223
+ export function probeXpcFraming(buffer: Buffer): XpcFramingProbe {
224
+ if (buffer.length < XPC_WRAPPER_HEADER_SIZE) {
225
+ return {status: 'incomplete'};
226
+ }
227
+ const magic = buffer.readUInt32LE(0);
228
+ if (magic !== WRAPPER_MAGIC) {
229
+ return {status: 'desynced', reason: `Invalid XPC wrapper magic: 0x${magic.toString(16)}`};
230
+ }
231
+ const bodyLength = buffer.readBigUInt64LE(8);
232
+ if (bodyLength > MAX_XPC_BODY_SIZE) {
233
+ return {status: 'desynced', reason: `XPC body length ${bodyLength} exceeds ${MAX_XPC_BODY_SIZE}`};
234
+ }
235
+ const byteLength = XPC_WRAPPER_HEADER_SIZE + Number(bodyLength);
236
+ if (buffer.length < byteLength) {
237
+ return {status: 'incomplete'};
238
+ }
239
+ return {status: 'ok', byteLength};
240
+ }
241
+
205
242
  /**
206
243
  * Decodes an XPC Buffer into a message object.
207
244
  * (Keep this function if you plan to handle incoming messages.)
@@ -9,6 +9,9 @@ import {BaseService} from '../base-service.js';
9
9
 
10
10
  const log = getLogger('CoreDeviceService');
11
11
 
12
+ /** Transports already carrying the permanent failure loggers. */
13
+ const loggedTransports = new WeakSet<RemoteXpcFramedTransport>();
14
+
12
15
  const CONNECT_TIMEOUT_MS = 10_000;
13
16
  const DEFAULT_INVOKE_TIMEOUT_MS = 30_000;
14
17
 
@@ -132,6 +135,7 @@ export abstract class CoreDeviceService extends BaseService {
132
135
 
133
136
  protected async createTransport(): Promise<RemoteXpcFramedTransport> {
134
137
  const transport = new RemoteXpcFramedTransport(await this.resolveServiceAddress(this.serviceName));
138
+ attachTransportLogging(transport);
135
139
  await transport.connect({timeoutMs: CONNECT_TIMEOUT_MS});
136
140
  return transport;
137
141
  }
@@ -167,17 +171,15 @@ export abstract class CoreDeviceService extends BaseService {
167
171
  }
168
172
 
169
173
  /**
170
- * Creates a transport and attaches a permanent `'error'` listener. The
171
- * framed transport is an EventEmitter; an `'error'` emitted with no listener
172
- * is thrown by Node and crashes the process. `invoke()` registers a per-call
173
- * listener, but fire-and-forget `send()` does not so this guarantees a
174
- * listener always exists for the transport's lifetime.
174
+ * Creates a transport that already carries a permanent `'error'` listener.
175
+ * Attaching it after connect() would leave the handshake window uncovered:
176
+ * frames arriving there can emit `'error'`, and Node throws one that has no
177
+ * listener. Attaching is idempotent, so an override of createTransport() that
178
+ * already attached is not double-wired.
175
179
  */
176
180
  private async newTransport(): Promise<RemoteXpcFramedTransport> {
177
181
  const transport = await this.createTransport();
178
- transport.on('error', (error: Error) => {
179
- log.debug(`CoreDevice transport error: ${error.message}`);
180
- });
182
+ attachTransportLogging(transport);
181
183
  this.nextMessageId = 1;
182
184
  return transport;
183
185
  }
@@ -286,6 +288,7 @@ export abstract class CoreDeviceService extends BaseService {
286
288
  ): Promise<XPCDictionary> {
287
289
  return new Promise<XPCDictionary>((resolve, reject) => {
288
290
  let settled = false;
291
+ let lastDecodeError: Error | undefined;
289
292
 
290
293
  const cleanup = (): void => {
291
294
  if (settled) {
@@ -294,6 +297,7 @@ export abstract class CoreDeviceService extends BaseService {
294
297
  settled = true;
295
298
  clearTimeout(timer);
296
299
  transport.off('message', onMessage);
300
+ transport.off('decodeError', onDecodeError);
297
301
  transport.off('error', onError);
298
302
  transport.off('close', onClose);
299
303
  };
@@ -307,6 +311,10 @@ export abstract class CoreDeviceService extends BaseService {
307
311
  resolve(body);
308
312
  };
309
313
 
314
+ const onDecodeError = (error: Error): void => {
315
+ lastDecodeError = error;
316
+ };
317
+
310
318
  const onError = (error: Error): void => {
311
319
  cleanup();
312
320
  reject(error);
@@ -319,20 +327,41 @@ export abstract class CoreDeviceService extends BaseService {
319
327
 
320
328
  const timer = setTimeout(() => {
321
329
  cleanup();
330
+ const cause = lastDecodeError ? `; last message was undecodable: ${lastDecodeError.message}` : '';
322
331
  reject(
323
332
  new CoreDeviceError(
324
- `CoreDevice invocation '${featureIdentifier ?? '<none>'}' timed out after ${timeoutMs}ms`,
333
+ `CoreDevice invocation '${featureIdentifier ?? '<none>'}' timed out after ${timeoutMs}ms${cause}`,
325
334
  ),
326
335
  );
327
336
  }, timeoutMs);
328
337
 
329
338
  transport.on('message', onMessage);
339
+ transport.on('decodeError', onDecodeError);
330
340
  transport.once('error', onError);
331
341
  transport.once('close', onClose);
332
342
  });
333
343
  }
334
344
  }
335
345
 
346
+ /**
347
+ * Attaches the permanent failure listeners once per transport. An `'error'` with
348
+ * no listener is thrown by Node and crashes the process, and fire-and-forget
349
+ * `send()` registers no per-call listener of its own.
350
+ */
351
+ function attachTransportLogging(transport: RemoteXpcFramedTransport): void {
352
+ if (loggedTransports.has(transport)) {
353
+ return;
354
+ }
355
+ loggedTransports.add(transport);
356
+
357
+ transport.on('error', (error: Error) => {
358
+ log.debug(`CoreDevice transport error: ${error.message}`);
359
+ });
360
+ transport.once('decodeError', (error: Error) => {
361
+ log.debug(`CoreDevice skipped an undecodable message: ${error.message}`);
362
+ });
363
+ }
364
+
336
365
  /**
337
366
  * Builds a descriptive error from a CoreDevice reply that carries no output.
338
367
  * The device returns an `NSError`-shaped `CoreDevice.error` whose `userInfo`