Skip to content

Commit

Permalink
Merge pull request #487 from doronz88/bugfix/message_id
Browse files Browse the repository at this point in the history
remotexpc: fix message-id tracking
  • Loading branch information
doronz88 authored Jul 17, 2023
2 parents bdcfb09 + d9daf1b commit bc56f91
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions pymobiledevice3/remote/remotexpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class RemoteXPCConnection:
def __init__(self, address: Tuple[str, int]):
self.address = address
self.sock: Optional[socket.socket] = None
self.next_message_id = 0
self.next_message_id: Mapping[int: int] = {1: 0, 3: 0}
self.peer_info = None

def __enter__(self) -> 'RemoteXPCConnection':
Expand All @@ -39,7 +39,8 @@ def close(self) -> None:

def send_request(self, data: Mapping) -> None:
self.sock.sendall(
DataFrame(stream_id=1, data=create_xpc_wrapper(data, message_id=self.next_message_id)).serialize())
DataFrame(stream_id=1, data=create_xpc_wrapper(data, message_id=self.next_message_id[1])).serialize())
self.next_message_id[1] += 1

def receive_response(self):
while True:
Expand All @@ -54,7 +55,7 @@ def receive_response(self):
if xpc_message.payload.obj.data.entries is None:
continue

self.next_message_id = xpc_message.message_id + 1
self.next_message_id[frame.stream_id] = xpc_message.message_id + 1
return get_object_from_xpc_wrapper(frame.data)

def send_receive_request(self, data: Mapping):
Expand All @@ -75,11 +76,11 @@ def _do_handshake(self) -> None:
# send first actual requests
self.send_request({})
self._send_frame(DataFrame(stream_id=1, data=XpcWrapper.build({'size': 0, 'flags': 0x0201, 'payload': None})))
self.next_message_id += 1
self.next_message_id[1] += 1
self._send_frame(HeadersFrame(stream_id=3, flags=['END_HEADERS']))
self._send_frame(
DataFrame(stream_id=3, data=XpcWrapper.build({'size': 0, 'flags': 0x00400001, 'payload': None})))
self.next_message_id += 1
self.next_message_id[3] += 1

assert isinstance(self._receive_frame(), SettingsFrame)

Expand Down

0 comments on commit bc56f91

Please sign in to comment.