Title: [213330] trunk/Source/WebKit2
Revision
213330
Author
commit-qu...@webkit.org
Date
2017-03-02 17:29:51 -0800 (Thu, 02 Mar 2017)

Log Message

Move part of NetworkRTCProvider::close implementation in NetworkRTCProvider destructor
https://bugs.webkit.org/show_bug.cgi?id=169104

Patch by Youenn Fablet <you...@apple.com> on 2017-03-02
Reviewed by Alex Christensen.

Improving NetworkRTCProvider clean-up by moving some member field cleaning to the destructor.
The remaining cleaning is still kept in NetworkRTCProvider::close as we need to go to the rtc network thread and
for that, we take a ref of NetworkRTCProvider.
Stopping any resolver before freeing them.

* NetworkProcess/webrtc/NetworkRTCMonitor.h:
* NetworkProcess/webrtc/NetworkRTCProvider.cpp:
(WebKit::NetworkRTCProvider::~NetworkRTCProvider):
(WebKit::NetworkRTCProvider::close):
* NetworkProcess/webrtc/NetworkRTCProvider.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (213329 => 213330)


--- trunk/Source/WebKit2/ChangeLog	2017-03-03 01:10:51 UTC (rev 213329)
+++ trunk/Source/WebKit2/ChangeLog	2017-03-03 01:29:51 UTC (rev 213330)
@@ -1,5 +1,23 @@
 2017-03-02  Youenn Fablet  <you...@apple.com>
 
+        Move part of NetworkRTCProvider::close implementation in NetworkRTCProvider destructor
+        https://bugs.webkit.org/show_bug.cgi?id=169104
+
+        Reviewed by Alex Christensen.
+
+        Improving NetworkRTCProvider clean-up by moving some member field cleaning to the destructor.
+        The remaining cleaning is still kept in NetworkRTCProvider::close as we need to go to the rtc network thread and
+        for that, we take a ref of NetworkRTCProvider.
+        Stopping any resolver before freeing them.
+
+        * NetworkProcess/webrtc/NetworkRTCMonitor.h:
+        * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
+        (WebKit::NetworkRTCProvider::~NetworkRTCProvider):
+        (WebKit::NetworkRTCProvider::close):
+        * NetworkProcess/webrtc/NetworkRTCProvider.h:
+
+2017-03-02  Youenn Fablet  <you...@apple.com>
+
         [iOS] Replicate NetworkProcess Mac sandboxing in iOS to allow TCP/UDP
         https://bugs.webkit.org/show_bug.cgi?id=169105
 

Modified: trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCMonitor.h (213329 => 213330)


--- trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCMonitor.h	2017-03-03 01:10:51 UTC (rev 213329)
+++ trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCMonitor.h	2017-03-03 01:29:51 UTC (rev 213330)
@@ -48,6 +48,7 @@
 
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
     void stopUpdating();
+    bool isStarted() const { return m_isStarted; }
 
 private:
     void startUpdating();

Modified: trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp (213329 => 213330)


--- trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp	2017-03-03 01:10:51 UTC (rev 213329)
+++ trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.cpp	2017-03-03 01:29:51 UTC (rev 213330)
@@ -64,10 +64,19 @@
 #endif
 }
 
+NetworkRTCProvider::~NetworkRTCProvider()
+{
+    ASSERT(!m_connection);
+    ASSERT(!m_sockets.size());
+    ASSERT(!m_rtcMonitor.isStarted());
+
+    for (auto identifier : m_resolvers.keys())
+        stopResolver(identifier);
+}
+
 void NetworkRTCProvider::close()
 {
     m_connection = nullptr;
-    m_resolvers.clear();
     m_rtcMonitor.stopUpdating();
 
     callOnRTCNetworkThread([this]() {

Modified: trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.h (213329 => 213330)


--- trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.h	2017-03-03 01:10:51 UTC (rev 213329)
+++ trunk/Source/WebKit2/NetworkProcess/webrtc/NetworkRTCProvider.h	2017-03-03 01:29:51 UTC (rev 213330)
@@ -52,6 +52,7 @@
 class NetworkRTCProvider : public ThreadSafeRefCounted<NetworkRTCProvider>, public rtc::MessageHandler {
 public:
     static Ref<NetworkRTCProvider> create(NetworkConnectionToWebProcess& connection) { return adoptRef(*new NetworkRTCProvider(connection)); }
+    ~NetworkRTCProvider();
 
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&);
     void didReceiveNetworkRTCMonitorMessage(IPC::Connection& connection, IPC::Decoder& decoder) { m_rtcMonitor.didReceiveMessage(connection, decoder); }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to