appium-ios-remotexpc 5.15.2 → 5.15.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 CHANGED
@@ -1,3 +1,15 @@
1
+ ## [5.15.4](https://github.com/appium/appium-ios-remotexpc/compare/v5.15.3...v5.15.4) (2026-08-25)
2
+
3
+ ### Bug Fixes
4
+
5
+ * handle fragmented responses and mid-wait disconnects in Apple TV NetworkClient ([#302](https://github.com/appium/appium-ios-remotexpc/issues/302)) ([48dc2be](https://github.com/appium/appium-ios-remotexpc/commit/48dc2be2c01e5be661b5f8cd9f12c3140743681e))
6
+
7
+ ## [5.15.3](https://github.com/appium/appium-ios-remotexpc/compare/v5.15.2...v5.15.3) (2026-08-24)
8
+
9
+ ### Bug Fixes
10
+
11
+ * serialize DVT socket reads through a single receive pump ([#300](https://github.com/appium/appium-ios-remotexpc/issues/300)) ([d87b820](https://github.com/appium/appium-ios-remotexpc/commit/d87b820dd6e374153d3e9f8e46e91e5eea8f0bd8))
12
+
1
13
  ## [5.15.2](https://github.com/appium/appium-ios-remotexpc/compare/v5.15.1...v5.15.2) (2026-08-21)
2
14
 
3
15
  ### Bug Fixes
@@ -1 +1 @@
1
- {"version":3,"file":"network-client.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/network/network-client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,YAAY,CAAC;AAIvD,6DAA6D;AAC7D,qBAAa,aAAc,YAAW,sBAAsB;IAI9C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,mBAAmB,CAA+B;gBAE7B,MAAM,EAAE,aAAa;IAE5C,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8ChD,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BpC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;IAqFrC,UAAU,IAAI,IAAI;IAIlB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,OAAO;CAWhB"}
1
+ {"version":3,"file":"network-client.d.ts","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/network/network-client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,YAAY,CAAC;AAIvD,6DAA6D;AAC7D,qBAAa,aAAc,YAAW,sBAAsB;IAI9C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,mBAAmB,CAA+B;gBAE7B,MAAM,EAAE,aAAa;IAE5C,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8ChD,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BpC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC;IAsFrC,UAAU,IAAI,IAAI;IAIlB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,OAAO;CAWhB"}
@@ -88,6 +88,7 @@ export class NetworkClient {
88
88
  if (this.socket) {
89
89
  this.socket.removeListener('data', onData);
90
90
  this.socket.removeListener('error', onError);
91
+ this.socket.removeListener('close', onClose);
91
92
  }
92
93
  };
93
94
  const onData = (chunk) => {
@@ -124,12 +125,12 @@ export class NetworkClient {
124
125
  reject(new NetworkError(`Socket error: ${error.message}`));
125
126
  };
126
127
  const onClose = () => {
127
- if (timeoutId) {
128
- clearTimeout(timeoutId);
129
- }
128
+ log.error('Connection closed during receive');
129
+ cleanup();
130
+ reject(new NetworkError('Connection closed before response was received'));
130
131
  };
131
132
  if (this.socket) {
132
- this.socket.once('data', onData);
133
+ this.socket.on('data', onData);
133
134
  this.socket.once('error', onError);
134
135
  this.socket.once('close', onClose);
135
136
  timeoutId = setTimeout(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"network-client.js","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/network/network-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAC,iBAAiB,EAAC,MAAM,gBAAgB,CAAC;AAGjD,MAAM,GAAG,GAAG,SAAS,CAAC,eAAe,CAAC,CAAC;AAEvC,6DAA6D;AAC7D,MAAM,OAAO,aAAa;IAIK;IAHrB,MAAM,GAAsB,IAAI,CAAC;IACjC,mBAAmB,GAA0B,IAAI,CAAC;IAE1D,YAA6B,MAAqB;QAArB,WAAM,GAAN,MAAM,CAAe;IAAG,CAAC;IAEtD,KAAK,CAAC,OAAO,CAAC,EAAU,EAAE,IAAY;QACpC,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAEzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,aAAa,GAAG,GAAG,EAAE;gBACzB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC7B,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;oBACvC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAClC,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAE5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC/B,GAAG,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACpC,aAAa,EAAE,CAAC;gBAChB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;gBACtC,aAAa,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,YAAY,CAAC,sBAAsB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC/B,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBAC5B,aAAa,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC7B,aAAa,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE;gBACzC,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;gBACxC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,YAAY,CAAC,4BAA4B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;YAChF,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAExB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAS;QACxB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAC;QACjD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAChD,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAC,CAAC,CAAC;QAEpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,YAAY,CAAC,iCAAiC,CAAC,CAAC,CAAC;gBAC5D,OAAO;YACT,CAAC;YAED,MAAM,OAAO,GAAG,CAAC,KAAwB,EAAE,EAAE;gBAC3C,IAAI,KAAK,EAAE,CAAC;oBACV,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;oBACvC,MAAM,CAAC,IAAI,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACpD,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,cAAc,GAAkB,IAAI,CAAC;YACzC,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,SAAS,GAA0B,IAAI,CAAC;YAE5C,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,IAAI,SAAS,EAAE,CAAC;oBACd,YAAY,CAAC,SAAS,CAAC,CAAC;oBACxB,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;oBAC3C,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;gBAC/B,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;oBAExC,IAAI,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,IAAI,iBAAiB,CAAC,aAAa,EAAE,CAAC;wBACpE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;wBAChF,IAAI,KAAK,KAAK,iBAAiB,CAAC,KAAK,EAAE,CAAC;4BACtC,MAAM,IAAI,YAAY,CAAC,qCAAqC,iBAAiB,CAAC,KAAK,WAAW,KAAK,GAAG,CAAC,CAAC;wBAC1G,CAAC;wBACD,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;wBACrE,UAAU,GAAG,IAAI,CAAC;wBAClB,GAAG,CAAC,KAAK,CAAC,qCAAqC,cAAc,QAAQ,CAAC,CAAC;oBACzE,CAAC;oBAED,IACE,UAAU;wBACV,cAAc,KAAK,IAAI;wBACvB,MAAM,CAAC,MAAM,IAAI,iBAAiB,CAAC,aAAa,GAAG,cAAc,EACjE,CAAC;wBACD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAC5B,iBAAiB,CAAC,aAAa,EAC/B,iBAAiB,CAAC,aAAa,GAAG,cAAc,CACjD,CAAC;wBACF,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;wBACxD,GAAG,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;wBACvD,OAAO,EAAE,CAAC;wBACV,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACpB,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;oBAC1C,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,IAAI,YAAY,CAAC,6BAA8B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;gBAC/B,GAAG,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;gBACjD,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,YAAY,CAAC,iBAAiB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,IAAI,SAAS,EAAE,CAAC;oBACd,YAAY,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAEnC,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC1B,GAAG,CAAC,KAAK,CAAC,0BAA0B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;oBAC7D,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,IAAI,YAAY,CAAC,0BAA0B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC;gBAC9E,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,UAAU;QACR,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAEO,qBAAqB,CAAC,QAAa;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;QACjE,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACnD,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,YAAY,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACvC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"network-client.js","sourceRoot":"","sources":["../../../../../src/lib/apple-tv/network/network-client.ts"],"names":[],"mappings":"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"}
@@ -17,8 +17,18 @@ export declare class DVTSecureSocketProxyService extends BaseService {
17
17
  private curMessageId;
18
18
  private readonly channelCache;
19
19
  private readonly channelMessages;
20
+ private readonly channelWaiters;
20
21
  private isHandshakeComplete;
21
22
  private readBuffer;
23
+ private readonly pendingChunks;
24
+ private bufferedLength;
25
+ private readonly dataWaiters;
26
+ private socketError;
27
+ private isPumpRunning;
28
+ private listeningSocket;
29
+ private readonly boundOnData;
30
+ private readonly boundOnError;
31
+ private readonly boundOnClose;
22
32
  constructor(udid: string);
23
33
  /**
24
34
  * Connect to the DVT service and perform handshake
@@ -57,6 +67,15 @@ export declare class DVTSecureSocketProxyService extends BaseService {
57
67
  * Close the DVT service connection
58
68
  */
59
69
  close(): Promise<void>;
70
+ private attachSocketListeners;
71
+ private detachSocketListeners;
72
+ private flushDataWaiters;
73
+ private onSocketData;
74
+ private consolidateReadBuffer;
75
+ private onSocketError;
76
+ private onSocketClose;
77
+ private rejectAllWaiters;
78
+ private hasPendingWaiters;
60
79
  /**
61
80
  * Perform DTX protocol handshake to establish connection and retrieve capabilities
62
81
  */
@@ -71,6 +90,8 @@ export declare class DVTSecureSocketProxyService extends BaseService {
71
90
  * Receive packet fragments until a complete message is available for the specified channel
72
91
  */
73
92
  private recvPacketFragments;
93
+ private ensurePumpRunning;
94
+ private runPump;
74
95
  /**
75
96
  * Read exact number of bytes from socket with buffering
76
97
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/dvt/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAC,WAAW,EAAW,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EAAC,UAAU,EAAE,aAAa,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAevE;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,WAAW;IAC1D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,wCAAwC;IACxE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,KAAK;IAEtC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6C;IAC7E,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,UAAU,CAA2B;gBAEjC,IAAI,EAAE,MAAM;IAKxB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B;;OAEG;IACH,uBAAuB,IAAI,eAAe;IAI1C;;;;OAIG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BvD;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDnH;;;;OAIG;IACG,SAAS,CACb,OAAO,GAAE,MAAsD,EAC/D,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAiBxB;;;;OAIG;IACG,WAAW,CACf,OAAO,GAAE,MAAsD,EAC/D,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IA8BlC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC5B;;OAEG;YACW,gBAAgB;IAkC9B,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,8BAA8B;IAetC;;OAEG;YACW,qBAAqB;IAwBnC;;OAEG;YACW,mBAAmB;IA6CjC;;OAEG;YACW,SAAS;IA+DvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4D1B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAoC5B;AAED,OAAO,EAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAC,CAAC;AAC3E,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,8BAA8B,CAAC;AAC3F,YAAY,EAAC,gBAAgB,EAAE,uBAAuB,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/services/ios/dvt/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,eAAe,EAAE,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAC,WAAW,EAAW,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EAAC,UAAU,EAAE,aAAa,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAsBvE;;;GAGG;AACH,qBAAa,2BAA4B,SAAQ,WAAW;IAC1D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,wCAAwC;IACxE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,KAAK;IAEtC,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,oBAAoB,CAAuB;IACnD,OAAO,CAAC,eAAe,CAAa;IACpC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6C;IAC7E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2C;IAC1E,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqD;IACjF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiD;IAC9E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;gBAErD,IAAI,EAAE,MAAM;IAKxB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9B;;OAEG;IACH,uBAAuB,IAAI,eAAe;IAI1C;;;;OAIG;IACG,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BvD;;;;;OAKG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAM,GAAG,IAAW,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDnH;;;;OAIG;IACG,SAAS,CACb,OAAO,GAAE,MAAsD,EAC/D,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAiBxB;;;;OAIG;IACG,WAAW,CACf,OAAO,GAAE,MAAsD,EAC/D,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IA8BlC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2C5B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;YACW,gBAAgB;IAkC9B,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,8BAA8B;IAetC;;OAEG;YACW,qBAAqB;IA0BnC;;OAEG;YACW,mBAAmB;IAuCjC,OAAO,CAAC,iBAAiB;YAiBX,OAAO;IAqDrB;;OAEG;YACW,SAAS;IAgCvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAwBvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4D1B;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkB9B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAkC9B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAoC5B;AAED,OAAO,EAAC,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAC,CAAC;AAC3E,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,8BAA8B,CAAC;AAC3F,YAAY,EAAC,gBAAgB,EAAE,uBAAuB,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC"}
@@ -23,8 +23,18 @@ export class DVTSecureSocketProxyService extends BaseService {
23
23
  curMessageId = 0;
24
24
  channelCache = new Map();
25
25
  channelMessages = new Map();
26
+ channelWaiters = new Map();
26
27
  isHandshakeComplete = false;
27
28
  readBuffer = Buffer.alloc(0);
29
+ pendingChunks = [];
30
+ bufferedLength = 0;
31
+ dataWaiters = [];
32
+ socketError = null;
33
+ isPumpRunning = false;
34
+ listeningSocket = null;
35
+ boundOnData = (chunk) => this.onSocketData(chunk);
36
+ boundOnError = (err) => this.onSocketError(err);
37
+ boundOnClose = () => this.onSocketClose();
28
38
  constructor(udid) {
29
39
  super(udid);
30
40
  this.channelMessages.set(DVTSecureSocketProxyService.BROADCAST_CHANNEL, new ChannelFragmenter());
@@ -40,6 +50,7 @@ export class DVTSecureSocketProxyService extends BaseService {
40
50
  this.connection = await this.startLockdownWithoutCheckin(DVTSecureSocketProxyService.RSD_SERVICE_NAME);
41
51
  this.socket = this.connection.getSocket();
42
52
  stripSSL(this.socket);
53
+ this.attachSocketListeners(this.socket);
43
54
  await this.performHandshake();
44
55
  }
45
56
  /**
@@ -196,17 +207,89 @@ export class DVTSecureSocketProxyService extends BaseService {
196
207
  }
197
208
  }
198
209
  const socketToDestroy = this.socket;
210
+ this.detachSocketListeners();
199
211
  this.connection.close();
200
212
  this.connection = null;
201
213
  this.socket = null;
202
214
  this.isHandshakeComplete = false;
215
+ this.socketError = null;
203
216
  this.channelCache.clear();
204
217
  this.channelMessages.clear();
205
218
  this.channelMessages.set(DVTSecureSocketProxyService.BROADCAST_CHANNEL, new ChannelFragmenter());
206
- // Forcibly destroy the socket so any pending readExact calls unblock
207
- // immediately rather than waiting for the remote FIN.
219
+ this.readBuffer = Buffer.alloc(0);
220
+ this.pendingChunks.length = 0;
221
+ this.bufferedLength = 0;
222
+ this.rejectAllWaiters(new Error('Service closed'));
223
+ this.flushDataWaiters();
208
224
  socketToDestroy?.destroy();
209
225
  }
226
+ attachSocketListeners(socket) {
227
+ if (this.listeningSocket === socket) {
228
+ return;
229
+ }
230
+ this.detachSocketListeners();
231
+ this.listeningSocket = socket;
232
+ socket.on('data', this.boundOnData);
233
+ socket.on('error', this.boundOnError);
234
+ socket.on('close', this.boundOnClose);
235
+ }
236
+ detachSocketListeners() {
237
+ if (!this.listeningSocket) {
238
+ return;
239
+ }
240
+ this.listeningSocket.off('data', this.boundOnData);
241
+ this.listeningSocket.off('error', this.boundOnError);
242
+ this.listeningSocket.off('close', this.boundOnClose);
243
+ this.listeningSocket = null;
244
+ }
245
+ flushDataWaiters() {
246
+ for (const waiter of this.dataWaiters.splice(0)) {
247
+ waiter();
248
+ }
249
+ }
250
+ onSocketData(chunk) {
251
+ this.pendingChunks.push(chunk);
252
+ this.bufferedLength += chunk.length;
253
+ if (this.dataWaiters.length > 0) {
254
+ this.flushDataWaiters();
255
+ }
256
+ else {
257
+ this.listeningSocket?.pause();
258
+ }
259
+ }
260
+ consolidateReadBuffer() {
261
+ if (this.pendingChunks.length === 0) {
262
+ return;
263
+ }
264
+ this.readBuffer = Buffer.concat([this.readBuffer, ...this.pendingChunks]);
265
+ this.pendingChunks.length = 0;
266
+ }
267
+ onSocketError(err) {
268
+ if (!this.socketError) {
269
+ this.socketError = err;
270
+ }
271
+ this.flushDataWaiters();
272
+ }
273
+ onSocketClose() {
274
+ if (!this.socketError) {
275
+ this.socketError = new Error('Socket closed');
276
+ }
277
+ this.flushDataWaiters();
278
+ }
279
+ rejectAllWaiters(error) {
280
+ for (const waiters of this.channelWaiters.values()) {
281
+ for (const waiter of waiters.splice(0)) {
282
+ if (waiter.signal && waiter.onAbort) {
283
+ waiter.signal.removeEventListener('abort', waiter.onAbort);
284
+ }
285
+ waiter.reject(error);
286
+ }
287
+ }
288
+ this.channelWaiters.clear();
289
+ }
290
+ hasPendingWaiters() {
291
+ return Array.from(this.channelWaiters.values()).some((waiters) => waiters.length > 0);
292
+ }
210
293
  /**
211
294
  * Perform DTX protocol handshake to establish connection and retrieve capabilities
212
295
  */
@@ -261,6 +344,7 @@ export class DVTSecureSocketProxyService extends BaseService {
261
344
  * Drain any buffered messages that arrived during handshake
262
345
  */
263
346
  async drainBufferedMessages() {
347
+ this.consolidateReadBuffer();
264
348
  if (this.readBuffer.length === 0) {
265
349
  return;
266
350
  }
@@ -282,24 +366,69 @@ export class DVTSecureSocketProxyService extends BaseService {
282
366
  catch (error) {
283
367
  log.debug('Error while draining buffer:', error);
284
368
  }
369
+ this.bufferedLength = this.readBuffer.length;
285
370
  }
286
371
  /**
287
372
  * Receive packet fragments until a complete message is available for the specified channel
288
373
  */
289
374
  async recvPacketFragments(channel, signal) {
290
- while (true) {
291
- const fragmenter = this.channelMessages.get(channel);
292
- if (!fragmenter) {
293
- throw new Error(`No fragmenter for channel ${channel}`);
375
+ const fragmenter = this.channelMessages.get(channel);
376
+ if (!fragmenter) {
377
+ throw new Error(`No fragmenter for channel ${channel}`);
378
+ }
379
+ const queued = fragmenter.get();
380
+ if (queued) {
381
+ return queued;
382
+ }
383
+ signal?.throwIfAborted();
384
+ const promise = new Promise((resolve, reject) => {
385
+ const waiter = { resolve, reject, signal };
386
+ if (signal) {
387
+ const onAbort = () => {
388
+ const waiters = this.channelWaiters.get(channel);
389
+ if (waiters) {
390
+ const idx = waiters.indexOf(waiter);
391
+ if (idx >= 0) {
392
+ waiters.splice(idx, 1);
393
+ }
394
+ }
395
+ reject(signal.reason ?? new DOMException('Receive aborted', 'AbortError'));
396
+ };
397
+ waiter.onAbort = onAbort;
398
+ signal.addEventListener('abort', onAbort, { once: true });
294
399
  }
295
- // Check if we have a complete message
296
- const message = fragmenter.get();
297
- if (message) {
298
- return message;
400
+ const waiters = this.channelWaiters.get(channel) ?? [];
401
+ this.channelWaiters.set(channel, waiters);
402
+ waiters.push(waiter);
403
+ });
404
+ this.ensurePumpRunning();
405
+ return promise;
406
+ }
407
+ ensurePumpRunning() {
408
+ if (this.isPumpRunning) {
409
+ return;
410
+ }
411
+ this.isPumpRunning = true;
412
+ void this.runPump()
413
+ .catch((err) => {
414
+ this.rejectAllWaiters(err instanceof Error ? err : new Error(String(err)));
415
+ })
416
+ .finally(() => {
417
+ this.isPumpRunning = false;
418
+ if (this.hasPendingWaiters()) {
419
+ this.ensurePumpRunning();
299
420
  }
300
- // Read next message header
301
- const headerData = await this.readExact(DTX_CONSTANTS.MESSAGE_HEADER_SIZE, signal);
421
+ });
422
+ }
423
+ async runPump() {
424
+ while (this.hasPendingWaiters()) {
425
+ const headerData = await this.readExact(DTX_CONSTANTS.MESSAGE_HEADER_SIZE);
302
426
  const header = DTXMessage.parseMessageHeader(headerData);
427
+ if (header.magic !== DTX_CONSTANTS.MESSAGE_HEADER_MAGIC) {
428
+ const err = new Error(`Invalid DTX message header magic: 0x${header.magic.toString(16)} (stream desynchronized)`);
429
+ this.socketError = err;
430
+ throw err;
431
+ }
303
432
  const receivedChannel = Math.abs(header.channelCode);
304
433
  if (!this.channelMessages.has(receivedChannel)) {
305
434
  this.channelMessages.set(receivedChannel, new ChannelFragmenter());
@@ -312,69 +441,54 @@ export class DVTSecureSocketProxyService extends BaseService {
312
441
  if (header.fragmentCount > 1 && header.fragmentId === 0) {
313
442
  continue;
314
443
  }
315
- // Read message payload
316
444
  const messageData = await this.readExact(header.length);
317
- // Add fragment to appropriate channel
318
445
  const targetFragmenter = this.channelMessages.get(receivedChannel);
319
446
  if (!targetFragmenter) {
320
447
  continue;
321
448
  }
322
449
  targetFragmenter.addFragment(header, messageData);
450
+ const waiters = this.channelWaiters.get(receivedChannel);
451
+ if (waiters && waiters.length > 0) {
452
+ const completedMessage = targetFragmenter.get();
453
+ if (completedMessage) {
454
+ const waiter = waiters.shift();
455
+ if (waiter) {
456
+ if (waiter.signal && waiter.onAbort) {
457
+ waiter.signal.removeEventListener('abort', waiter.onAbort);
458
+ }
459
+ waiter.resolve(completedMessage);
460
+ }
461
+ }
462
+ }
323
463
  }
324
464
  }
325
465
  /**
326
466
  * Read exact number of bytes from socket with buffering
327
467
  */
328
- async readExact(length, signal) {
329
- if (!this.socket) {
468
+ async readExact(length) {
469
+ const socket = this.socket;
470
+ if (!socket) {
330
471
  throw new Error(`${this.constructor.name} is not initialized. Call connect() before sending messages.`);
331
472
  }
332
- // Keep reading until we have enough data
333
- while (this.readBuffer.length < length) {
334
- // Fast-fail on closed/aborted reads so callers can terminate blocked
335
- // iterators instead of hanging until another socket event arrives.
336
- if (this.socket.destroyed) {
473
+ if (this.listeningSocket !== socket) {
474
+ this.attachSocketListeners(socket);
475
+ }
476
+ while (this.bufferedLength < length) {
477
+ if (this.socketError) {
478
+ throw this.socketError;
479
+ }
480
+ if (this.socket !== socket || socket.destroyed) {
337
481
  throw new Error('Socket is destroyed');
338
482
  }
339
- signal?.throwIfAborted();
340
- const chunk = await new Promise((resolve, reject) => {
341
- const socket = this.socket;
342
- if (!socket) {
343
- reject(new Error('Socket is not available'));
344
- return;
345
- }
346
- const cleanup = () => {
347
- socket.off('data', onData);
348
- socket.off('error', onError);
349
- socket.off('close', onClose);
350
- signal?.removeEventListener('abort', onAbort);
351
- };
352
- const onData = (data) => {
353
- cleanup();
354
- resolve(data);
355
- };
356
- const onError = (err) => {
357
- cleanup();
358
- reject(err);
359
- };
360
- const onClose = () => {
361
- cleanup();
362
- reject(new Error('Socket closed during read'));
363
- };
364
- const onAbort = () => {
365
- cleanup();
366
- reject(signal?.reason ?? new DOMException('Read aborted', 'AbortError'));
367
- };
368
- socket.once('data', onData);
369
- socket.once('error', onError);
370
- socket.once('close', onClose);
371
- signal?.addEventListener('abort', onAbort, { once: true });
483
+ socket.resume();
484
+ await new Promise((resolve) => {
485
+ this.dataWaiters.push(resolve);
372
486
  });
373
- this.readBuffer = Buffer.concat([this.readBuffer, chunk]);
374
487
  }
375
- // Extract exact amount requested
488
+ this.consolidateReadBuffer();
376
489
  const result = this.readBuffer.subarray(0, length);
377
490
  this.readBuffer = this.readBuffer.subarray(length);
491
+ this.bufferedLength = this.readBuffer.length;
378
492
  return result;
379
493
  }
380
494
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/ios/dvt/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/services/ios/dvt/index.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.15.2",
3
+ "version": "5.15.4",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "bugs": {
@@ -106,6 +106,7 @@ export class NetworkClient implements NetworkClientInterface {
106
106
  if (this.socket) {
107
107
  this.socket.removeListener('data', onData);
108
108
  this.socket.removeListener('error', onError);
109
+ this.socket.removeListener('close', onClose);
109
110
  }
110
111
  };
111
112
 
@@ -151,13 +152,13 @@ export class NetworkClient implements NetworkClientInterface {
151
152
  };
152
153
 
153
154
  const onClose = () => {
154
- if (timeoutId) {
155
- clearTimeout(timeoutId);
156
- }
155
+ log.error('Connection closed during receive');
156
+ cleanup();
157
+ reject(new NetworkError('Connection closed before response was received'));
157
158
  };
158
159
 
159
160
  if (this.socket) {
160
- this.socket.once('data', onData);
161
+ this.socket.on('data', onData);
161
162
  this.socket.once('error', onError);
162
163
  this.socket.once('close', onClose);
163
164
 
@@ -22,6 +22,13 @@ const log = getLogger('DVTSecureSocketProxyService');
22
22
 
23
23
  const MIN_ERROR_DESCRIPTION_LENGTH = 20;
24
24
 
25
+ interface ChannelWaiter {
26
+ resolve: (message: Buffer) => void;
27
+ reject: (err: Error) => void;
28
+ signal?: AbortSignal;
29
+ onAbort?: () => void;
30
+ }
31
+
25
32
  /**
26
33
  * DVTSecureSocketProxyService provides access to Apple's DTServiceHub functionality
27
34
  * This service enables various instruments and debugging capabilities through the DTX protocol
@@ -37,8 +44,18 @@ export class DVTSecureSocketProxyService extends BaseService {
37
44
  private curMessageId: number = 0;
38
45
  private readonly channelCache: Map<string, Channel> = new Map();
39
46
  private readonly channelMessages: Map<number, ChannelFragmenter> = new Map();
47
+ private readonly channelWaiters: Map<number, ChannelWaiter[]> = new Map();
40
48
  private isHandshakeComplete: boolean = false;
41
49
  private readBuffer: Buffer = Buffer.alloc(0);
50
+ private readonly pendingChunks: Buffer[] = [];
51
+ private bufferedLength: number = 0;
52
+ private readonly dataWaiters: Array<() => void> = [];
53
+ private socketError: Error | null = null;
54
+ private isPumpRunning: boolean = false;
55
+ private listeningSocket: net.Socket | null = null;
56
+ private readonly boundOnData = (chunk: Buffer): void => this.onSocketData(chunk);
57
+ private readonly boundOnError = (err: Error): void => this.onSocketError(err);
58
+ private readonly boundOnClose = (): void => this.onSocketClose();
42
59
 
43
60
  constructor(udid: string) {
44
61
  super(udid);
@@ -57,6 +74,7 @@ export class DVTSecureSocketProxyService extends BaseService {
57
74
  this.connection = await this.startLockdownWithoutCheckin(DVTSecureSocketProxyService.RSD_SERVICE_NAME);
58
75
  this.socket = this.connection.getSocket();
59
76
  stripSSL(this.socket);
77
+ this.attachSocketListeners(this.socket);
60
78
 
61
79
  await this.performHandshake();
62
80
  }
@@ -252,19 +270,99 @@ export class DVTSecureSocketProxyService extends BaseService {
252
270
  }
253
271
 
254
272
  const socketToDestroy = this.socket;
273
+ this.detachSocketListeners();
255
274
  this.connection.close();
256
275
  this.connection = null;
257
276
  this.socket = null;
258
277
  this.isHandshakeComplete = false;
278
+ this.socketError = null;
259
279
  this.channelCache.clear();
260
280
  this.channelMessages.clear();
261
281
  this.channelMessages.set(DVTSecureSocketProxyService.BROADCAST_CHANNEL, new ChannelFragmenter());
282
+ this.readBuffer = Buffer.alloc(0);
283
+ this.pendingChunks.length = 0;
284
+ this.bufferedLength = 0;
285
+ this.rejectAllWaiters(new Error('Service closed'));
286
+ this.flushDataWaiters();
262
287
 
263
- // Forcibly destroy the socket so any pending readExact calls unblock
264
- // immediately rather than waiting for the remote FIN.
265
288
  socketToDestroy?.destroy();
266
289
  }
267
290
 
291
+ private attachSocketListeners(socket: net.Socket): void {
292
+ if (this.listeningSocket === socket) {
293
+ return;
294
+ }
295
+ this.detachSocketListeners();
296
+ this.listeningSocket = socket;
297
+ socket.on('data', this.boundOnData);
298
+ socket.on('error', this.boundOnError);
299
+ socket.on('close', this.boundOnClose);
300
+ }
301
+
302
+ private detachSocketListeners(): void {
303
+ if (!this.listeningSocket) {
304
+ return;
305
+ }
306
+ this.listeningSocket.off('data', this.boundOnData);
307
+ this.listeningSocket.off('error', this.boundOnError);
308
+ this.listeningSocket.off('close', this.boundOnClose);
309
+ this.listeningSocket = null;
310
+ }
311
+
312
+ private flushDataWaiters(): void {
313
+ for (const waiter of this.dataWaiters.splice(0)) {
314
+ waiter();
315
+ }
316
+ }
317
+
318
+ private onSocketData(chunk: Buffer): void {
319
+ this.pendingChunks.push(chunk);
320
+ this.bufferedLength += chunk.length;
321
+ if (this.dataWaiters.length > 0) {
322
+ this.flushDataWaiters();
323
+ } else {
324
+ this.listeningSocket?.pause();
325
+ }
326
+ }
327
+
328
+ private consolidateReadBuffer(): void {
329
+ if (this.pendingChunks.length === 0) {
330
+ return;
331
+ }
332
+ this.readBuffer = Buffer.concat([this.readBuffer, ...this.pendingChunks]);
333
+ this.pendingChunks.length = 0;
334
+ }
335
+
336
+ private onSocketError(err: Error): void {
337
+ if (!this.socketError) {
338
+ this.socketError = err;
339
+ }
340
+ this.flushDataWaiters();
341
+ }
342
+
343
+ private onSocketClose(): void {
344
+ if (!this.socketError) {
345
+ this.socketError = new Error('Socket closed');
346
+ }
347
+ this.flushDataWaiters();
348
+ }
349
+
350
+ private rejectAllWaiters(error: Error): void {
351
+ for (const waiters of this.channelWaiters.values()) {
352
+ for (const waiter of waiters.splice(0)) {
353
+ if (waiter.signal && waiter.onAbort) {
354
+ waiter.signal.removeEventListener('abort', waiter.onAbort);
355
+ }
356
+ waiter.reject(error);
357
+ }
358
+ }
359
+ this.channelWaiters.clear();
360
+ }
361
+
362
+ private hasPendingWaiters(): boolean {
363
+ return Array.from(this.channelWaiters.values()).some((waiters) => waiters.length > 0);
364
+ }
365
+
268
366
  /**
269
367
  * Perform DTX protocol handshake to establish connection and retrieve capabilities
270
368
  */
@@ -333,6 +431,7 @@ export class DVTSecureSocketProxyService extends BaseService {
333
431
  * Drain any buffered messages that arrived during handshake
334
432
  */
335
433
  private async drainBufferedMessages(): Promise<void> {
434
+ this.consolidateReadBuffer();
336
435
  if (this.readBuffer.length === 0) {
337
436
  return;
338
437
  }
@@ -354,28 +453,81 @@ export class DVTSecureSocketProxyService extends BaseService {
354
453
  } catch (error) {
355
454
  log.debug('Error while draining buffer:', error);
356
455
  }
456
+ this.bufferedLength = this.readBuffer.length;
357
457
  }
358
458
 
359
459
  /**
360
460
  * Receive packet fragments until a complete message is available for the specified channel
361
461
  */
362
462
  private async recvPacketFragments(channel: number, signal?: AbortSignal): Promise<Buffer> {
363
- while (true) {
364
- const fragmenter = this.channelMessages.get(channel);
365
- if (!fragmenter) {
366
- throw new Error(`No fragmenter for channel ${channel}`);
367
- }
463
+ const fragmenter = this.channelMessages.get(channel);
464
+ if (!fragmenter) {
465
+ throw new Error(`No fragmenter for channel ${channel}`);
466
+ }
467
+
468
+ const queued = fragmenter.get();
469
+ if (queued) {
470
+ return queued;
471
+ }
472
+
473
+ signal?.throwIfAborted();
368
474
 
369
- // Check if we have a complete message
370
- const message = fragmenter.get();
371
- if (message) {
372
- return message;
475
+ const promise = new Promise<Buffer>((resolve, reject) => {
476
+ const waiter: ChannelWaiter = {resolve, reject, signal};
477
+ if (signal) {
478
+ const onAbort = () => {
479
+ const waiters = this.channelWaiters.get(channel);
480
+ if (waiters) {
481
+ const idx = waiters.indexOf(waiter);
482
+ if (idx >= 0) {
483
+ waiters.splice(idx, 1);
484
+ }
485
+ }
486
+ reject(signal.reason ?? new DOMException('Receive aborted', 'AbortError'));
487
+ };
488
+ waiter.onAbort = onAbort;
489
+ signal.addEventListener('abort', onAbort, {once: true});
373
490
  }
374
491
 
375
- // Read next message header
376
- const headerData = await this.readExact(DTX_CONSTANTS.MESSAGE_HEADER_SIZE, signal);
492
+ const waiters = this.channelWaiters.get(channel) ?? [];
493
+ this.channelWaiters.set(channel, waiters);
494
+ waiters.push(waiter);
495
+ });
496
+
497
+ this.ensurePumpRunning();
498
+ return promise;
499
+ }
500
+
501
+ private ensurePumpRunning(): void {
502
+ if (this.isPumpRunning) {
503
+ return;
504
+ }
505
+ this.isPumpRunning = true;
506
+ void this.runPump()
507
+ .catch((err: unknown) => {
508
+ this.rejectAllWaiters(err instanceof Error ? err : new Error(String(err)));
509
+ })
510
+ .finally(() => {
511
+ this.isPumpRunning = false;
512
+ if (this.hasPendingWaiters()) {
513
+ this.ensurePumpRunning();
514
+ }
515
+ });
516
+ }
517
+
518
+ private async runPump(): Promise<void> {
519
+ while (this.hasPendingWaiters()) {
520
+ const headerData = await this.readExact(DTX_CONSTANTS.MESSAGE_HEADER_SIZE);
377
521
  const header = DTXMessage.parseMessageHeader(headerData);
378
522
 
523
+ if (header.magic !== DTX_CONSTANTS.MESSAGE_HEADER_MAGIC) {
524
+ const err = new Error(
525
+ `Invalid DTX message header magic: 0x${header.magic.toString(16)} (stream desynchronized)`,
526
+ );
527
+ this.socketError = err;
528
+ throw err;
529
+ }
530
+
379
531
  const receivedChannel = Math.abs(header.channelCode);
380
532
 
381
533
  if (!this.channelMessages.has(receivedChannel)) {
@@ -392,80 +544,61 @@ export class DVTSecureSocketProxyService extends BaseService {
392
544
  continue;
393
545
  }
394
546
 
395
- // Read message payload
396
547
  const messageData = await this.readExact(header.length);
397
548
 
398
- // Add fragment to appropriate channel
399
549
  const targetFragmenter = this.channelMessages.get(receivedChannel);
400
550
  if (!targetFragmenter) {
401
551
  continue;
402
552
  }
403
553
  targetFragmenter.addFragment(header, messageData);
554
+
555
+ const waiters = this.channelWaiters.get(receivedChannel);
556
+ if (waiters && waiters.length > 0) {
557
+ const completedMessage = targetFragmenter.get();
558
+ if (completedMessage) {
559
+ const waiter = waiters.shift();
560
+ if (waiter) {
561
+ if (waiter.signal && waiter.onAbort) {
562
+ waiter.signal.removeEventListener('abort', waiter.onAbort);
563
+ }
564
+ waiter.resolve(completedMessage);
565
+ }
566
+ }
567
+ }
404
568
  }
405
569
  }
406
570
 
407
571
  /**
408
572
  * Read exact number of bytes from socket with buffering
409
573
  */
410
- private async readExact(length: number, signal?: AbortSignal): Promise<Buffer> {
411
- if (!this.socket) {
574
+ private async readExact(length: number): Promise<Buffer> {
575
+ const socket = this.socket;
576
+ if (!socket) {
412
577
  throw new Error(`${this.constructor.name} is not initialized. Call connect() before sending messages.`);
413
578
  }
414
579
 
415
- // Keep reading until we have enough data
416
- while (this.readBuffer.length < length) {
417
- // Fast-fail on closed/aborted reads so callers can terminate blocked
418
- // iterators instead of hanging until another socket event arrives.
419
- if (this.socket.destroyed) {
580
+ if (this.listeningSocket !== socket) {
581
+ this.attachSocketListeners(socket);
582
+ }
583
+
584
+ while (this.bufferedLength < length) {
585
+ if (this.socketError) {
586
+ throw this.socketError;
587
+ }
588
+ if (this.socket !== socket || socket.destroyed) {
420
589
  throw new Error('Socket is destroyed');
421
590
  }
422
- signal?.throwIfAborted();
423
-
424
- const chunk = await new Promise<Buffer>((resolve, reject) => {
425
- const socket = this.socket;
426
- if (!socket) {
427
- reject(new Error('Socket is not available'));
428
- return;
429
- }
430
- const cleanup = () => {
431
- socket.off('data', onData);
432
- socket.off('error', onError);
433
- socket.off('close', onClose);
434
- signal?.removeEventListener('abort', onAbort);
435
- };
436
-
437
- const onData = (data: Buffer) => {
438
- cleanup();
439
- resolve(data);
440
- };
441
591
 
442
- const onError = (err: Error) => {
443
- cleanup();
444
- reject(err);
445
- };
446
-
447
- const onClose = () => {
448
- cleanup();
449
- reject(new Error('Socket closed during read'));
450
- };
451
-
452
- const onAbort = () => {
453
- cleanup();
454
- reject(signal?.reason ?? new DOMException('Read aborted', 'AbortError'));
455
- };
456
-
457
- socket.once('data', onData);
458
- socket.once('error', onError);
459
- socket.once('close', onClose);
460
- signal?.addEventListener('abort', onAbort, {once: true});
592
+ socket.resume();
593
+ await new Promise<void>((resolve) => {
594
+ this.dataWaiters.push(resolve);
461
595
  });
462
-
463
- this.readBuffer = Buffer.concat([this.readBuffer, chunk]);
464
596
  }
465
597
 
466
- // Extract exact amount requested
598
+ this.consolidateReadBuffer();
467
599
  const result = this.readBuffer.subarray(0, length);
468
600
  this.readBuffer = this.readBuffer.subarray(length);
601
+ this.bufferedLength = this.readBuffer.length;
469
602
 
470
603
  return result;
471
604
  }