diff options
| author | 2012-04-06 01:01:09 +0200 | |
|---|---|---|
| committer | 2012-04-06 01:01:09 +0200 | |
| commit | 4113b710122aeb213a872c467a9616e303188e04 (patch) | |
| tree | 9a3c52ed166259117d7e475bc75ef67737a11967 | |
| parent | cd07d72075739d6b59238d16fde6d02a1b97dbb9 (diff) | |
| download | usbmuxd-4113b710122aeb213a872c467a9616e303188e04.tar.gz usbmuxd-4113b710122aeb213a872c467a9616e303188e04.tar.bz2 | |
libusbmuxd: make ffff* restore mode udid unique
Devices in restore mode may have an all-f UDID if a previous restore procedure
wasn't completed successfully. To be able to differentiate multiple of these
devices we add the usbmuxd device handle to make the UDID unique.
| -rw-r--r-- | libusbmuxd/libusbmuxd.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libusbmuxd/libusbmuxd.c b/libusbmuxd/libusbmuxd.c index 02aa750..4c94dc2 100644 --- a/libusbmuxd/libusbmuxd.c +++ b/libusbmuxd/libusbmuxd.c | |||
| @@ -551,6 +551,10 @@ int get_next_event(int sfd, usbmuxd_event_cb_t callback, void *user_data) | |||
| 551 | memset(devinfo->uuid, '\0', sizeof(devinfo->uuid)); | 551 | memset(devinfo->uuid, '\0', sizeof(devinfo->uuid)); |
| 552 | memcpy(devinfo->uuid, dev->serial_number, sizeof(devinfo->uuid)); | 552 | memcpy(devinfo->uuid, dev->serial_number, sizeof(devinfo->uuid)); |
| 553 | 553 | ||
| 554 | if (strcasecmp(devinfo->uuid, "ffffffffffffffffffffffffffffffffffffffff") == 0) { | ||
| 555 | sprintf(devinfo->uuid + 32, "%08x", devinfo->handle); | ||
| 556 | } | ||
| 557 | |||
| 554 | collection_add(&devices, devinfo); | 558 | collection_add(&devices, devinfo); |
| 555 | generate_event(callback, devinfo, UE_DEVICE_ADD, user_data); | 559 | generate_event(callback, devinfo, UE_DEVICE_ADD, user_data); |
| 556 | } else if (hdr.message == MESSAGE_DEVICE_REMOVE) { | 560 | } else if (hdr.message == MESSAGE_DEVICE_REMOVE) { |
| @@ -720,6 +724,10 @@ retry: | |||
| 720 | memset(devinfo->uuid, '\0', sizeof(devinfo->uuid)); | 724 | memset(devinfo->uuid, '\0', sizeof(devinfo->uuid)); |
| 721 | memcpy(devinfo->uuid, dev->serial_number, sizeof(devinfo->uuid)); | 725 | memcpy(devinfo->uuid, dev->serial_number, sizeof(devinfo->uuid)); |
| 722 | 726 | ||
| 727 | if (strcasecmp(devinfo->uuid, "ffffffffffffffffffffffffffffffffffffffff") == 0) { | ||
| 728 | sprintf(devinfo->uuid + 32, "%08x", devinfo->handle); | ||
| 729 | } | ||
| 730 | |||
| 723 | collection_add(&tmpdevs, devinfo); | 731 | collection_add(&tmpdevs, devinfo); |
| 724 | 732 | ||
| 725 | } else if (hdr.message == MESSAGE_DEVICE_REMOVE) { | 733 | } else if (hdr.message == MESSAGE_DEVICE_REMOVE) { |
