vine_service_s *origin_service = (vine_service_s *)origin;
vine_service_s *cloned_service = new vine_service_s;
- memcpy(cloned_service, origin_service, sizeof(vine_service_s));
+ cloned_service->type = origin_service->type;
+ strncpy(cloned_service->service_type, origin_service->service_type, VINE_MAX_SERVICE_TYPE_LEN);
+ strncpy(cloned_service->service_name, origin_service->service_name, VINE_MAX_SERVICE_NAME_LEN);
+ strncpy(cloned_service->host_name, origin_service->host_name, VINE_MAX_HOST_NAME_LEN);
+ strncpy(cloned_service->ip, origin_service->ip, VINE_MAX_IP_LEN);
+ cloned_service->family = origin_service->family;
+ cloned_service->port = origin_service->port;
cloned_service->attributes = origin_service->attributes;
+ strncpy(cloned_service->iface_name, origin_service->iface_name, IF_NAMESIZE);
+ cloned_service->state = origin_service->state;
+
+ cloned_service->disc_handle = NULL;
+ cloned_service->ip_resolved_cb = NULL;
+ cloned_service->ip_resolved_cb_data = NULL;
*cloned = cloned_service;
VINE_LOGD("Cloned service[%p]", cloned_service);