From 8ecfbc77ccaaa0c017aae5d944efec47bd2c6171 Mon Sep 17 00:00:00 2001 From: Martin Szulecki Date: Thu, 28 Apr 2011 19:42:21 +0200 Subject: idevicebackup2: Improve disconnect behavior to cleanly disconnect from agent --- tools/idevicebackup2.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'tools') diff --git a/tools/idevicebackup2.c b/tools/idevicebackup2.c index 442ce14..47dd4f2 100644 --- a/tools/idevicebackup2.c +++ b/tools/idevicebackup2.c @@ -1577,6 +1577,8 @@ checkpoint: if (err != MOBILEBACKUP2_E_SUCCESS) { printf("Could not send status response, error %d\n", err); } + } else if (!strcmp(dlmsg, "DLMessageDisconnect")) { + break; } else if (!strcmp(dlmsg, "DLMessageProcessMessage")) { node_tmp = plist_array_get_item(message, 1); if (plist_get_node_type(node_tmp) != PLIST_DICT) { @@ -1616,7 +1618,11 @@ checkpoint: printf("%s", str); free(str); } - break; + + err = mobilebackup2_send_status_response(mobilebackup2, 0, NULL, plist_new_dict()); + if (err != MOBILEBACKUP2_E_SUCCESS) { + printf("Could not send status response, error %d\n", err); + } } /* print status */ @@ -1713,15 +1719,15 @@ files_out: client = NULL; } + if (mobilebackup2) + mobilebackup2_client_free(mobilebackup2); + if (afc) afc_client_free(afc); if (np) np_client_free(np); - if (mobilebackup2) - mobilebackup2_client_free(mobilebackup2); - idevice_free(phone); return 0; -- cgit v1.1-32-gdbae