summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/InstallationProxy.c66
-rw-r--r--src/InstallationProxy.h3
2 files changed, 35 insertions, 34 deletions
diff --git a/src/InstallationProxy.c b/src/InstallationProxy.c
index 387f9ca..34777d1 100644
--- a/src/InstallationProxy.c
+++ b/src/InstallationProxy.c
@@ -26,7 +26,7 @@
#include <plist/plist.h>
#include "InstallationProxy.h"
-#include "iphone.h"
+#include "property_list_service.h"
#include "utils.h"
struct instproxy_status_data {
@@ -56,24 +56,25 @@ static void instproxy_unlock(instproxy_client_t client)
}
/**
- * Convert an iphone_error_t value to an instproxy_error_t value.
- * Used internally to get correct error codes when using plist helper
- * functions.
+ * Convert a property_list_service_error_t value to an instproxy_error_t value.
+ * Used internally to get correct error codes.
*
- * @param err An iphone_error_t error code
+ * @param err A property_list_service_error_t error code
*
* @return A matching instproxy_error_t error code,
* INSTPROXY_E_UNKNOWN_ERROR otherwise.
*/
-static instproxy_error_t iphone_to_instproxy_error(iphone_error_t err)
+static instproxy_error_t instproxy_error(property_list_service_error_t err)
{
switch (err) {
- case IPHONE_E_SUCCESS:
+ case PROPERTY_LIST_SERVICE_E_SUCCESS:
return INSTPROXY_E_SUCCESS;
- case IPHONE_E_INVALID_ARG:
+ case PROPERTY_LIST_SERVICE_E_INVALID_ARG:
return INSTPROXY_E_INVALID_ARG;
- case IPHONE_E_PLIST_ERROR:
+ case PROPERTY_LIST_SERVICE_E_PLIST_ERROR:
return INSTPROXY_E_PLIST_ERROR;
+ case PROPERTY_LIST_SERVICE_E_MUX_ERROR:
+ return INSTPROXY_E_CONN_FAILED;
default:
break;
}
@@ -100,14 +101,13 @@ instproxy_error_t instproxy_client_new(iphone_device_t device, int dst_port, ins
if (!device)
return INSTPROXY_E_INVALID_ARG;
- /* Attempt connection */
- iphone_connection_t connection = NULL;
- if (iphone_device_connect(device, dst_port, &connection) != IPHONE_E_SUCCESS) {
+ property_list_service_client_t plistclient = NULL;
+ if (property_list_service_client_new(device, dst_port, &plistclient) != PROPERTY_LIST_SERVICE_E_SUCCESS) {
return INSTPROXY_E_CONN_FAILED;
}
instproxy_client_t client_loc = (instproxy_client_t) malloc(sizeof(struct instproxy_client_int));
- client_loc->connection = connection;
+ client_loc->parent = plistclient;
client_loc->mutex = g_mutex_new();
client_loc->status_updater = NULL;
@@ -128,8 +128,8 @@ instproxy_error_t instproxy_client_free(instproxy_client_t client)
if (!client)
return INSTPROXY_E_INVALID_ARG;
- iphone_device_disconnect(client->connection);
- client->connection = NULL;
+ property_list_service_client_free(client->parent);
+ client->parent = NULL;
if (client->status_updater) {
log_dbg_msg(DBGMASK_INSTPROXY, "joining status_updater");
g_thread_join(client->status_updater);
@@ -155,7 +155,7 @@ instproxy_error_t instproxy_client_free(instproxy_client_t client)
*/
instproxy_error_t instproxy_browse(instproxy_client_t client, instproxy_apptype_t apptype, plist_t *result)
{
- if (!client || !client->connection || !result)
+ if (!client || !client->parent || !result)
return INSTPROXY_E_INVALID_ARG;
instproxy_error_t res = INSTPROXY_E_UNKNOWN_ERROR;
@@ -184,7 +184,7 @@ instproxy_error_t instproxy_browse(instproxy_client_t client, instproxy_apptype_
plist_dict_insert_item(dict, "Command", plist_new_string("Browse"));
instproxy_lock(client);
- res = iphone_to_instproxy_error(iphone_device_send_xml_plist(client->connection, dict));
+ res = instproxy_error(property_list_service_send_xml_plist(client->parent, dict));
plist_free(dict);
if (res != INSTPROXY_E_SUCCESS) {
log_dbg_msg(DBGMASK_INSTPROXY, "%s: could not send plist\n", __func__);
@@ -196,7 +196,7 @@ instproxy_error_t instproxy_browse(instproxy_client_t client, instproxy_apptype_
do {
browsing = 0;
dict = NULL;
- res = iphone_to_instproxy_error(iphone_device_receive_plist(client->connection, &dict));
+ res = instproxy_error(property_list_service_receive_plist(client->parent, &dict));
if (res != INSTPROXY_E_SUCCESS) {
break;
}
@@ -261,7 +261,7 @@ static instproxy_error_t instproxy_perform_operation(instproxy_client_t client,
do {
instproxy_lock(client);
- res = iphone_to_instproxy_error(iphone_device_receive_plist_with_timeout(client->connection, &dict, 30000));
+ res = instproxy_error(property_list_service_receive_plist_with_timeout(client->parent, &dict, 30000));
instproxy_unlock(client);
if (res != INSTPROXY_E_SUCCESS) {
log_dbg_msg(DBGMASK_INSTPROXY, "%s: could not receive plist, error %d\n", __func__, res);
@@ -314,7 +314,7 @@ static instproxy_error_t instproxy_perform_operation(instproxy_client_t client,
plist_free(dict);
dict = NULL;
}
- } while (ok && client->connection);
+ } while (ok && client->parent);
return res;
}
@@ -404,7 +404,7 @@ static instproxy_error_t instproxy_create_status_updater(instproxy_client_t clie
*/
static instproxy_error_t instproxy_install_or_upgrade(instproxy_client_t client, const char *pkg_path, plist_t sinf, plist_t metadata, instproxy_status_cb_t status_cb, const char *command)
{
- if (!client || !client->connection || !pkg_path) {
+ if (!client || !client->parent || !pkg_path) {
return INSTPROXY_E_INVALID_ARG;
}
if (sinf && (plist_get_node_type(sinf) != PLIST_DATA)) {
@@ -433,7 +433,7 @@ static instproxy_error_t instproxy_install_or_upgrade(instproxy_client_t client,
plist_dict_insert_item(dict, "PackagePath", plist_new_string(pkg_path));
instproxy_lock(client);
- res = iphone_to_instproxy_error(iphone_device_send_xml_plist(client->connection, dict));
+ res = instproxy_error(property_list_service_send_xml_plist(client->parent, dict));
instproxy_unlock(client);
plist_free(dict);
@@ -512,7 +512,7 @@ instproxy_error_t instproxy_upgrade(instproxy_client_t client, const char *pkg_p
*/
instproxy_error_t instproxy_uninstall(instproxy_client_t client, const char *appid, instproxy_status_cb_t status_cb)
{
- if (!client || !client->connection || !appid) {
+ if (!client || !client->parent || !appid) {
return INSTPROXY_E_INVALID_ARG;
}
@@ -526,7 +526,7 @@ instproxy_error_t instproxy_uninstall(instproxy_client_t client, const char *app
plist_dict_insert_item(dict, "Command", plist_new_string("Uninstall"));
instproxy_lock(client);
- res = iphone_to_instproxy_error(iphone_device_send_xml_plist(client->connection, dict));
+ res = instproxy_error(property_list_service_send_xml_plist(client->parent, dict));
instproxy_unlock(client);
plist_free(dict);
@@ -553,7 +553,7 @@ instproxy_error_t instproxy_uninstall(instproxy_client_t client, const char *app
*/
instproxy_error_t instproxy_lookup_archives(instproxy_client_t client, plist_t *result)
{
- if (!client || !client->connection || !result)
+ if (!client || !client->parent || !result)
return INSTPROXY_E_INVALID_ARG;
instproxy_error_t res = INSTPROXY_E_UNKNOWN_ERROR;
@@ -563,7 +563,7 @@ instproxy_error_t instproxy_lookup_archives(instproxy_client_t client, plist_t *
instproxy_lock(client);
- res = iphone_to_instproxy_error(iphone_device_send_xml_plist(client->connection, dict));
+ res = instproxy_error(property_list_service_send_xml_plist(client->parent, dict));
plist_free(dict);
if (res != INSTPROXY_E_SUCCESS) {
@@ -571,7 +571,7 @@ instproxy_error_t instproxy_lookup_archives(instproxy_client_t client, plist_t *
goto leave_unlock;
}
- res = iphone_to_instproxy_error(iphone_device_receive_plist(client->connection, result));
+ res = instproxy_error(property_list_service_receive_plist(client->parent, result));
if (res != INSTPROXY_E_SUCCESS) {
log_dbg_msg(DBGMASK_INSTPROXY, "%s: could not receive plist, error %d\n", __func__, res);
goto leave_unlock;
@@ -610,7 +610,7 @@ leave_unlock:
*/
instproxy_error_t instproxy_archive(instproxy_client_t client, const char *appid, uint32_t options, instproxy_status_cb_t status_cb)
{
- if (!client || !client->connection || !appid)
+ if (!client || !client->parent || !appid)
return INSTPROXY_E_INVALID_ARG;
if (client->status_updater) {
@@ -634,7 +634,7 @@ instproxy_error_t instproxy_archive(instproxy_client_t client, const char *appid
plist_dict_insert_item(dict, "Command", plist_new_string("Archive"));
instproxy_lock(client);
- res = iphone_to_instproxy_error(iphone_device_send_xml_plist(client->connection, dict));
+ res = instproxy_error(property_list_service_send_xml_plist(client->parent, dict));
instproxy_unlock(client);
plist_free(dict);
@@ -666,7 +666,7 @@ instproxy_error_t instproxy_archive(instproxy_client_t client, const char *appid
*/
instproxy_error_t instproxy_restore(instproxy_client_t client, const char *appid, instproxy_status_cb_t status_cb)
{
- if (!client || !client->connection || !appid)
+ if (!client || !client->parent || !appid)
return INSTPROXY_E_INVALID_ARG;
if (client->status_updater) {
@@ -680,7 +680,7 @@ instproxy_error_t instproxy_restore(instproxy_client_t client, const char *appid
plist_dict_insert_item(dict, "Command", plist_new_string("Restore"));
instproxy_lock(client);
- res = iphone_to_instproxy_error(iphone_device_send_xml_plist(client->connection, dict));
+ res = instproxy_error(property_list_service_send_xml_plist(client->parent, dict));
instproxy_unlock(client);
plist_free(dict);
@@ -712,7 +712,7 @@ instproxy_error_t instproxy_restore(instproxy_client_t client, const char *appid
*/
instproxy_error_t instproxy_remove_archive(instproxy_client_t client, const char *appid, instproxy_status_cb_t status_cb)
{
- if (!client || !client->connection || !appid)
+ if (!client || !client->parent || !appid)
return INSTPROXY_E_INVALID_ARG;
if (client->status_updater) {
@@ -726,7 +726,7 @@ instproxy_error_t instproxy_remove_archive(instproxy_client_t client, const char
plist_dict_insert_item(dict, "Command", plist_new_string("RemoveArchive"));
instproxy_lock(client);
- res = iphone_to_instproxy_error(iphone_device_send_xml_plist(client->connection, dict));
+ res = instproxy_error(property_list_service_send_xml_plist(client->parent, dict));
instproxy_unlock(client);
plist_free(dict);
diff --git a/src/InstallationProxy.h b/src/InstallationProxy.h
index c8c5ef1..f0b5691 100644
--- a/src/InstallationProxy.h
+++ b/src/InstallationProxy.h
@@ -24,9 +24,10 @@
#include <glib.h>
#include "libiphone/installation_proxy.h"
+#include "property_list_service.h"
struct instproxy_client_int {
- iphone_connection_t connection;
+ property_list_service_client_t parent;
GMutex *mutex;
GThread *status_updater;
};