Handle 'Paired' message and pass event to client through callback
diff --git a/include/usbmuxd.h b/include/usbmuxd.h
index d413eab..f345be2 100644
--- a/include/usbmuxd.h
+++ b/include/usbmuxd.h
@@ -45,7 +45,8 @@
  */
 enum usbmuxd_event_type {
     UE_DEVICE_ADD = 1,
-    UE_DEVICE_REMOVE
+    UE_DEVICE_REMOVE,
+    UE_DEVICE_PAIRED
 };
 
 /**
diff --git a/src/libusbmuxd.c b/src/libusbmuxd.c
index 90ae6e6..327746b 100644
--- a/src/libusbmuxd.c
+++ b/src/libusbmuxd.c
@@ -711,6 +711,18 @@
 			collection_remove(&devices, devinfo);
 			free(devinfo);
 		}
+	} else if (hdr.message == MESSAGE_DEVICE_PAIRED) {
+		uint32_t handle;
+		usbmuxd_device_info_t *devinfo;
+
+		memcpy(&handle, payload, sizeof(uint32_t));
+
+		devinfo = devices_find(handle);
+		if (!devinfo) {
+			DEBUG(1, "%s: WARNING: got paired message for device handle %d, but couldn't find the corresponding handle in the device list. This event will be ignored.\n", __func__, handle);
+		} else {
+			generate_event(callback, devinfo, UE_DEVICE_PAIRED, user_data);
+		}
 	} else if (hdr.length > 0) {
 		DEBUG(1, "%s: Unexpected message type %d length %d received!\n", __func__, hdr.message, hdr.length);
 	}