From fe6e9de976cbc7cd204cafa44a4e1a5c5f1a9e0f Mon Sep 17 00:00:00 2001 From: BALATON Zoltan Date: Wed, 13 May 2015 22:43:03 +0200 Subject: Catch Paired message even if it is ignored now to prevent returning an error to the user on receiving this message. --- include/usbmuxd-proto.h | 2 +- src/libusbmuxd.c | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/include/usbmuxd-proto.h b/include/usbmuxd-proto.h index 9ad5f71..a2a731e 100644 --- a/include/usbmuxd-proto.h +++ b/include/usbmuxd-proto.h @@ -52,7 +52,7 @@ enum usbmuxd_msgtype { MESSAGE_LISTEN = 3, MESSAGE_DEVICE_ADD = 4, MESSAGE_DEVICE_REMOVE = 5, - //??? + MESSAGE_DEVICE_PAIRED = 6, //??? MESSAGE_PLIST = 8, }; diff --git a/src/libusbmuxd.c b/src/libusbmuxd.c index af8636b..a8586f2 100644 --- a/src/libusbmuxd.c +++ b/src/libusbmuxd.c @@ -41,8 +41,8 @@ #endif #ifdef WIN32 -#include #include +#include #define sleep(x) Sleep(x*1000) #ifndef EPROTO #define EPROTO 134 @@ -268,8 +268,24 @@ static int receive_packet(int sfd, struct usbmuxd_header *header, void **payload hdr.length = sizeof(hdr) + sizeof(dwval); hdr.message = MESSAGE_DEVICE_REMOVE; } + } else if (strcmp(message, "Paired") == 0) { + /* device pair message */ + uint32_t dwval = 0; + plist_t n = plist_dict_get_item(plist, "DeviceID"); + if (n) { + plist_get_uint_val(n, &val); + *payload = malloc(sizeof(uint32_t)); + dwval = val; + memcpy(*payload, &dwval, sizeof(dwval)); + hdr.length = sizeof(hdr) + sizeof(dwval); + hdr.message = MESSAGE_DEVICE_PAIRED; + } } else { - DEBUG(1, "%s: Unexpected message '%s' in plist!\n", __func__, message); + char *xml = NULL; + uint32_t len = 0; + plist_to_xml(plist, &xml, &len); + DEBUG(1, "%s: Unexpected message '%s' in plist:\n%s\n", __func__, message, xml); + free(xml); free(message); plist_free(plist); return -EBADMSG; -- cgit v1.1-32-gdbae