webrtc_dns: Use version 4 UUID as a unique hostname 02/287102/1
authorSangchul Lee <sc11.lee@samsung.com>
Thu, 12 Jan 2023 06:09:53 +0000 (15:09 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 20 Jan 2023 00:06:03 +0000 (00:06 +0000)
It is mentioned in 3.1.1. of the link below.
: https://www.ietf.org/archive/id/draft-ietf-mmusic-mdns-ice-candidates-03.html

[Version] 0.3.281
[Issue type] Improvement

Change-Id: Ia4665c17fd812fb61d0e5f8c33c3ef7ecc97955a
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
(cherry picked from commit 5a1a61f89bb969e8fe807123677e7decb0a4e202)

packaging/capi-media-webrtc.spec
src/webrtc_dns.c

index 25ee162481451ccfb40da1064ad13db55d72a0ee..01c695a4dafbbff41ead85b0a7829b4f64afca1e 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.3.280
+Version:    0.3.281
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 6a78ca95b66e2d69fcc8ea01c9c1c84186018121..64c8f051dac0f831d10e8df2df67fe7daadece77 100644 (file)
@@ -22,7 +22,6 @@
 #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,
@@ -107,8 +106,9 @@ int _register_dns_service(webrtc_s *webrtc)
        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");
@@ -164,13 +164,12 @@ int _register_dns_service(webrtc_s *webrtc)
 
        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;