diff options
-rw-r--r-- | src/lockdown.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/lockdown.c b/src/lockdown.c index df1f60f..f78a78d 100644 --- a/src/lockdown.c +++ b/src/lockdown.c @@ -1512,6 +1512,12 @@ lockdownd_error_t lockdownd_start_service(lockdownd_client_t client, const char if (!client || !identifier || !service) return LOCKDOWN_E_INVALID_ARG; + if (*service) { + // reset fields if service descriptor is reused + (*service)->port = 0; + (*service)->ssl_enabled = 0; + } + char *host_id = NULL; userpref_get_host_id(&host_id); if (!host_id) @@ -1547,13 +1553,13 @@ lockdownd_error_t lockdownd_start_service(lockdownd_client_t client, const char if (!dict) return LOCKDOWN_E_PLIST_ERROR; - if (*service == NULL) - *service = (lockdownd_service_descriptor_t)malloc(sizeof(struct lockdownd_service_descriptor)); - (*service)->port = 0; - (*service)->ssl_enabled = 0; - ret = LOCKDOWN_E_UNKNOWN_ERROR; if (lockdown_check_result(dict, "StartService") == RESULT_SUCCESS) { + if (*service == NULL) + *service = (lockdownd_service_descriptor_t)malloc(sizeof(struct lockdownd_service_descriptor)); + (*service)->port = 0; + (*service)->ssl_enabled = 0; + /* read service port number */ plist_t node = plist_dict_get_item(dict, "Port"); if (node && (plist_get_node_type(node) == PLIST_UINT)) { |