From b97ab28033a63673e99b2060fb3220a7d6f2ba33 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Fri, 25 Sep 2020 12:20:06 -0400
Subject: [PATCH] icetransport: use default initializer to avoid locks

Change-Id: I74057cb5a6870875a3d8d7600397aee9fbd361da
---
 src/ice_transport.cpp | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/src/ice_transport.cpp b/src/ice_transport.cpp
index d4ba46c1fc..0e32ca9888 100644
--- a/src/ice_transport.cpp
+++ b/src/ice_transport.cpp
@@ -116,20 +116,20 @@ public:
     IpAddr getLocalAddress(unsigned comp_id) const;
     IpAddr getRemoteAddress(unsigned comp_id) const;
 
-    std::unique_ptr<pj_pool_t, std::function<void(pj_pool_t*)>> pool_;
-    IceTransportCompleteCb on_initdone_cb_;
-    IceTransportCompleteCb on_negodone_cb_;
-    IceRecvInfo on_recv_cb_;
+    std::unique_ptr<pj_pool_t, std::function<void(pj_pool_t*)>> pool_ {};
+    IceTransportCompleteCb on_initdone_cb_ {};
+    IceTransportCompleteCb on_negodone_cb_ {};
+    IceRecvInfo on_recv_cb_ {};
     mutable std::mutex iceMutex_ {};
     std::unique_ptr<pj_ice_strans, IceSTransDeleter> icest_;
-    unsigned component_count_;
+    unsigned component_count_ {};
     pj_ice_sess_cand cand_[MAX_CANDIDATES] {};
-    std::string local_ufrag_;
-    std::string local_pwd_;
-    pj_sockaddr remoteAddr_;
+    std::string local_ufrag_ {};
+    std::string local_pwd_ {};
+    pj_sockaddr remoteAddr_ {};
     std::condition_variable iceCV_ {};
-    pj_ice_strans_cfg config_;
-    std::string last_errmsg_;
+    pj_ice_strans_cfg config_ {};
+    std::string last_errmsg_ {};
 
     std::atomic_bool is_stopped_ {false};
 
@@ -138,10 +138,10 @@ public:
         Packet(void* pkt, pj_size_t size)
             : data {reinterpret_cast<char*>(pkt), reinterpret_cast<char*>(pkt) + size}
         {}
-        std::vector<char> data;
+        std::vector<char> data {};
     };
 
-    std::vector<PeerChannel> peerChannels_;
+    std::vector<PeerChannel> peerChannels_ {};
 
     struct ComponentIO
     {
@@ -151,7 +151,7 @@ public:
         IceRecvCb cb;
     };
 
-    std::vector<ComponentIO> compIO_;
+    std::vector<ComponentIO> compIO_ {};
 
     std::atomic_bool initiatorSession_ {true};
 
@@ -182,25 +182,25 @@ public:
     void setDefaultRemoteAddress(int comp_id, const IpAddr& addr);
     const IpAddr& getDefaultRemoteAddress(int comp_id) const;
 
-    std::unique_ptr<upnp::Controller> upnp_;
-    std::mutex upnpMutex_;
+    std::unique_ptr<upnp::Controller> upnp_ {};
+    std::mutex upnpMutex_ {};
 
     bool onlyIPv4Private_ {true};
 
     // IO/Timer events are handled by following thread
-    std::thread thread_;
+    std::thread thread_ {};
     std::atomic_bool threadTerminateFlags_ {false};
     bool handleEvents(unsigned max_msec);
 
     // Wait data on components
-    pj_ssize_t lastSentLen_;
+    pj_ssize_t lastSentLen_ {};
     std::condition_variable waitDataCv_ = {};
 
     std::atomic_bool destroying_ {false};
-    onShutdownCb scb;
+    onShutdownCb scb {};
 
     // Default remote adresses
-    std::vector<IpAddr> iceDefaultRemoteAddr_;
+    std::vector<IpAddr> iceDefaultRemoteAddr_ {};
 };
 
 //==============================================================================
-- 
GitLab