add plist helper functions to reduce code duplication
diff --git a/src/libusbmuxd.c b/src/libusbmuxd.c
index 6cc48cf..941ddc0 100644
--- a/src/libusbmuxd.c
+++ b/src/libusbmuxd.c
@@ -320,27 +320,41 @@
 	return sent;
 }
 
+#ifdef HAVE_PLIST
+static int send_plist_packet(int sfd, uint32_t tag, plist_t message)
+{
+	int res;
+	char *payload = NULL;
+	uint32_t payload_size = 0;
+
+	plist_to_xml(message, &payload, &payload_size);
+	res = send_packet(sfd, MESSAGE_PLIST, tag, payload, payload_size);
+	free(payload);
+
+	return res;
+}
+
+static plist_t create_plist_message(const char* message_type)
+{
+	plist_t plist = plist_new_dict();
+	plist_dict_insert_item(plist, "BundleID", plist_new_string(PLIST_BUNDLE_ID));
+	plist_dict_insert_item(plist, "ClientVersionString", plist_new_string(PLIST_CLIENT_VERSION_STRING));
+	plist_dict_insert_item(plist, "MessageType", plist_new_string(message_type));
+	plist_dict_insert_item(plist, "ProgName", plist_new_string(PLIST_PROGNAME));	
+	return plist;
+}
+#endif
+
 static int send_listen_packet(int sfd, uint32_t tag)
 {
 	int res = 0;
 #ifdef HAVE_PLIST
 	if (proto_version == 1) {
-		/* plist packet */
-		char *payload = NULL;
-		uint32_t payload_size = 0;
-		plist_t plist;
-
 		/* construct message plist */
-		plist = plist_new_dict();
-		plist_dict_insert_item(plist, "BundleID", plist_new_string(PLIST_BUNDLE_ID));
-		plist_dict_insert_item(plist, "ClientVersionString", plist_new_string(PLIST_CLIENT_VERSION_STRING));
-		plist_dict_insert_item(plist, "MessageType", plist_new_string("Listen"));
-		plist_dict_insert_item(plist, "ProgName", plist_new_string(PLIST_PROGNAME));
-		plist_to_xml(plist, &payload, &payload_size);
-		plist_free(plist);
+		plist_t plist = create_plist_message("Listen");
 
-		res = send_packet(sfd, MESSAGE_PLIST, tag, payload, payload_size);
-		free(payload);
+		res = send_plist_packet(sfd, tag, plist);
+		plist_free(plist);
 	} else
 #endif
 	{
@@ -355,24 +369,13 @@
 	int res = 0;
 #ifdef HAVE_PLIST
 	if (proto_version == 1) {
-		/* plist packet */
-		char *payload = NULL;
-		uint32_t payload_size = 0;
-		plist_t plist;
-
 		/* construct message plist */
-		plist = plist_new_dict();
-		plist_dict_insert_item(plist, "BundleID", plist_new_string(PLIST_BUNDLE_ID));
-		plist_dict_insert_item(plist, "ClientVersionString", plist_new_string(PLIST_CLIENT_VERSION_STRING));
-		plist_dict_insert_item(plist, "MessageType", plist_new_string("Connect"));
+		plist_t plist = create_plist_message("Connect");
 		plist_dict_insert_item(plist, "DeviceID", plist_new_uint(device_id));
 		plist_dict_insert_item(plist, "PortNumber", plist_new_uint(htons(port)));
-		plist_dict_insert_item(plist, "ProgName", plist_new_string(PLIST_PROGNAME));
-		plist_to_xml(plist, &payload, &payload_size);
-		plist_free(plist);
 
-		res = send_packet(sfd, MESSAGE_PLIST, tag, (void*)payload, payload_size);
-		free(payload);
+		res = send_plist_packet(sfd, tag, plist);
+		plist_free(plist);
 	} else
 #endif
 	{