#include <arpa/inet.h>
#define DNSS_REGISTER_NAME "nativeWebRTC"
-#define DNSS_REGISTER_HOST "nativewebrtc.local"
//LCOV_EXCL_START
static void __dns_service_register_record_cb(DNSServiceRef service, DNSRecordRef record, const DNSServiceFlags flags, DNSServiceErrorType error_type,
struct sockaddr_storage hostaddr;
struct addrinfo *addrs = NULL;
static DNSRecordRef record = NULL;
- gchar *ip;
- const char *host = DNSS_REGISTER_HOST;
+ g_autofree gchar *ip = NULL;
+ g_autofree gchar *uuid = g_uuid_string_random();
+ g_autofree gchar *host = g_strdup_printf("%s.local", uuid);
RET_VAL_IF(webrtc == NULL, WEBRTC_ERROR_INVALID_PARAMETER, "webrtc is NULL");
RET_VAL_IF(webrtc->dns.client_pa != NULL, WEBRTC_ERROR_INVALID_OPERATION, "client_pa has been already registered");
LOG_INFO("client_pa[%p] client[%p] name[%s] host[%s] ip[%s]", webrtc->dns.client_pa, webrtc->dns.client, DNSS_REGISTER_NAME, host, ip);
- webrtc->dns.hostname = g_strdup(host);
- webrtc->dns.ip = ip;
+ webrtc->dns.hostname = g_steal_pointer(&host);
+ webrtc->dns.ip = g_steal_pointer(&ip);
return WEBRTC_ERROR_NONE;
error:
- g_free(ip);
if (webrtc->dns.client_pa) {
DNSServiceRefDeallocate(webrtc->dns.client_pa);
webrtc->dns.client_pa = NULL;