Modified: trunk/Source/WebKit/ChangeLog (220177 => 220178)
--- trunk/Source/WebKit/ChangeLog 2017-08-03 03:49:53 UTC (rev 220177)
+++ trunk/Source/WebKit/ChangeLog 2017-08-03 03:53:05 UTC (rev 220178)
@@ -1,3 +1,16 @@
+2017-08-02 Andreas Kling <[email protected]>
+
+ NetworkRTCProvider::createResolver() leaks CFHost objects
+ https://bugs.webkit.org/show_bug.cgi?id=175103
+ <rdar://problem/33690347>
+
+ Reviewed by Youenn Fablet.
+
+ Add a missing adoptCF() so we don't leak the CFHost.
+
+ * NetworkProcess/webrtc/NetworkRTCProvider.cpp:
+ (WebKit::NetworkRTCProvider::createResolver):
+
2017-08-02 Jeremy Jones <[email protected]>
Remove unused and obsolete setting mediaDocumentEntersFullscreenAutomatically
Modified: trunk/Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp (220177 => 220178)
--- trunk/Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp 2017-08-03 03:49:53 UTC (rev 220177)
+++ trunk/Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp 2017-08-03 03:53:05 UTC (rev 220178)
@@ -163,15 +163,12 @@
void NetworkRTCProvider::createResolver(uint64_t identifier, const String& address)
{
- CFHostRef host = CFHostCreateWithName(kCFAllocatorDefault, address.createCFString().get());
- ASSERT(host);
+ auto resolver = std::make_unique<Resolver>(identifier, *this, adoptCF(CFHostCreateWithName(kCFAllocatorDefault, address.createCFString().get())));
- auto resolver = std::make_unique<Resolver>(identifier, *this, host);
-
CFHostClientContext context = { 0, resolver.get(), nullptr, nullptr, nullptr };
- CFHostSetClient(host, NetworkRTCProvider::resolvedName, &context);
- CFHostScheduleWithRunLoop(host, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
- Boolean result = CFHostStartInfoResolution(host, kCFHostAddresses, nullptr);
+ CFHostSetClient(resolver->host.get(), NetworkRTCProvider::resolvedName, &context);
+ CFHostScheduleWithRunLoop(resolver->host.get(), CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
+ Boolean result = CFHostStartInfoResolution(resolver->host.get(), kCFHostAddresses, nullptr);
ASSERT_UNUSED(result, result);
m_resolvers.add(identifier, WTFMove(resolver));