Skip to content

Commit 18fb7f9

Browse files
authored
browser(webkit): ignore WebSocket HTTPS errors on Mac (#1899)
1 parent 74ce041 commit 18fb7f9

File tree

2 files changed

+80
-13
lines changed

2 files changed

+80
-13
lines changed

browser_patches/webkit/BUILD_NUMBER

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1202
1+
1203

browser_patches/webkit/patches/bootstrap.diff

Lines changed: 79 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4742,18 +4742,15 @@ index a9d228ca404918860c40651994db78a1e76db5ca..1fc3c345308dfed8384d1c02334f2030
47424742
}
47434743

47444744
diff --git a/Source/WebCore/page/SocketProvider.cpp b/Source/WebCore/page/SocketProvider.cpp
4745-
index 803ac83155ff4df1becf75cd4710f6fbf7bbc32a..54fb28427e8b2b7da2ea3204673414f8e1bd24d7 100644
4745+
index 803ac83155ff4df1becf75cd4710f6fbf7bbc32a..cc08682748a6d2fdf5d79980cd629812c98aa7ce 100644
47464746
--- a/Source/WebCore/page/SocketProvider.cpp
47474747
+++ b/Source/WebCore/page/SocketProvider.cpp
4748-
@@ -33,7 +33,11 @@ namespace WebCore {
4748+
@@ -33,7 +33,7 @@ namespace WebCore {
47494749

47504750
Ref<SocketStreamHandle> SocketProvider::createSocketStreamHandle(const URL& url, SocketStreamHandleClient& client, PAL::SessionID sessionID, const String& credentialPartition, const StorageSessionProvider* provider)
47514751
{
4752-
+#if OS(WINDOWS)
4752+
- return SocketStreamHandleImpl::create(url, client, sessionID, credentialPartition, { }, provider);
47534753
+ return SocketStreamHandleImpl::create(url, false, client, sessionID, credentialPartition, { }, provider);
4754-
+#else
4755-
return SocketStreamHandleImpl::create(url, client, sessionID, credentialPartition, { }, provider);
4756-
+#endif
47574754
}
47584755

47594756
RefPtr<ThreadableWebSocketChannel> SocketProvider::createWebSocketChannel(Document&, WebSocketChannelClient&)
@@ -5370,6 +5367,66 @@ index 87930048f4fd18d6098af7de4da25be532df5931..2bb2afcf9473b0d5d97efbe18dd7b814
53705367
Vector<WTF::Function<void(bool)>> m_listeners;
53715368
Timer m_updateStateTimer;
53725369

5370+
diff --git a/Source/WebCore/platform/network/cf/SocketStreamHandleImpl.h b/Source/WebCore/platform/network/cf/SocketStreamHandleImpl.h
5371+
index d677280d2b5e7b053a240c155d64bc881f1737bb..1be949e09982b34366d162e6d45ebc51a76dcfb0 100644
5372+
--- a/Source/WebCore/platform/network/cf/SocketStreamHandleImpl.h
5373+
+++ b/Source/WebCore/platform/network/cf/SocketStreamHandleImpl.h
5374+
@@ -47,7 +47,7 @@ class SocketStreamHandleClient;
5375+
5376+
class SocketStreamHandleImpl : public SocketStreamHandle {
5377+
public:
5378+
- static Ref<SocketStreamHandleImpl> create(const URL& url, SocketStreamHandleClient& client, PAL::SessionID sessionID, const String& credentialPartition, SourceApplicationAuditToken&& auditData, const StorageSessionProvider* provider) { return adoptRef(*new SocketStreamHandleImpl(url, client, sessionID, credentialPartition, WTFMove(auditData), provider)); }
5379+
+ static Ref<SocketStreamHandleImpl> create(const URL& url, bool ignoreCertificateErrors, SocketStreamHandleClient& client, PAL::SessionID sessionID, const String& credentialPartition, SourceApplicationAuditToken&& auditData, const StorageSessionProvider* provider) { return adoptRef(*new SocketStreamHandleImpl(url, ignoreCertificateErrors, client, sessionID, credentialPartition, WTFMove(auditData), provider)); }
5380+
5381+
virtual ~SocketStreamHandleImpl();
5382+
5383+
@@ -61,7 +61,7 @@ private:
5384+
Optional<size_t> platformSendInternal(const uint8_t*, size_t);
5385+
bool sendPendingData();
5386+
5387+
- WEBCORE_EXPORT SocketStreamHandleImpl(const URL&, SocketStreamHandleClient&, PAL::SessionID, const String& credentialPartition, SourceApplicationAuditToken&&, const StorageSessionProvider*);
5388+
+ WEBCORE_EXPORT SocketStreamHandleImpl(const URL&, bool ignoreCertificateErrors, SocketStreamHandleClient&, PAL::SessionID, const String& credentialPartition, SourceApplicationAuditToken&&, const StorageSessionProvider*);
5389+
void createStreams();
5390+
void scheduleStreams();
5391+
void chooseProxy();
5392+
@@ -106,6 +106,7 @@ private:
5393+
String m_credentialPartition;
5394+
SourceApplicationAuditToken m_auditData;
5395+
RefPtr<const StorageSessionProvider> m_storageSessionProvider;
5396+
+ bool m_ignoreCertificateErrors { false };
5397+
5398+
StreamBuffer<uint8_t, 1024 * 1024> m_buffer;
5399+
static const unsigned maxBufferSize = 100 * 1024 * 1024;
5400+
diff --git a/Source/WebCore/platform/network/cf/SocketStreamHandleImplCFNet.cpp b/Source/WebCore/platform/network/cf/SocketStreamHandleImplCFNet.cpp
5401+
index 545c28e62f72771de5f3f3e9fed2e8cf6147ed0f..a6fc5f5b3fc62adce2604821bd29f9aed378c24c 100644
5402+
--- a/Source/WebCore/platform/network/cf/SocketStreamHandleImplCFNet.cpp
5403+
+++ b/Source/WebCore/platform/network/cf/SocketStreamHandleImplCFNet.cpp
5404+
@@ -96,7 +96,7 @@ static inline auto callbacksRunLoopMode()
5405+
#endif
5406+
}
5407+
5408+
-SocketStreamHandleImpl::SocketStreamHandleImpl(const URL& url, SocketStreamHandleClient& client, PAL::SessionID sessionID, const String& credentialPartition, SourceApplicationAuditToken&& auditData, const StorageSessionProvider* provider)
5409+
+SocketStreamHandleImpl::SocketStreamHandleImpl(const URL& url, bool ignoreCertificateErrors, SocketStreamHandleClient& client, PAL::SessionID sessionID, const String& credentialPartition, SourceApplicationAuditToken&& auditData, const StorageSessionProvider* provider)
5410+
: SocketStreamHandle(url, client)
5411+
, m_connectingSubstate(New)
5412+
, m_connectionType(Unknown)
5413+
@@ -104,6 +104,7 @@ SocketStreamHandleImpl::SocketStreamHandleImpl(const URL& url, SocketStreamHandl
5414+
, m_credentialPartition(credentialPartition)
5415+
, m_auditData(WTFMove(auditData))
5416+
, m_storageSessionProvider(provider)
5417+
+ , m_ignoreCertificateErrors(ignoreCertificateErrors)
5418+
{
5419+
LOG(Network, "SocketStreamHandle %p new client %p", this, &m_client);
5420+
5421+
@@ -360,7 +361,7 @@ void SocketStreamHandleImpl::createStreams()
5422+
}
5423+
5424+
if (shouldUseSSL()) {
5425+
- CFBooleanRef validateCertificateChain = DeprecatedGlobalSettings::allowsAnySSLCertificate() ? kCFBooleanFalse : kCFBooleanTrue;
5426+
+ CFBooleanRef validateCertificateChain = m_ignoreCertificateErrors || DeprecatedGlobalSettings::allowsAnySSLCertificate() ? kCFBooleanFalse : kCFBooleanTrue;
5427+
const void* keys[] = {
5428+
kCFStreamSSLPeerName,
5429+
kCFStreamSSLLevel,
53735430
diff --git a/Source/WebCore/platform/network/curl/CurlStream.cpp b/Source/WebCore/platform/network/curl/CurlStream.cpp
53745431
index 26dc7bef4b74bc6b4e2e526dec6523c3ad6d3643..c783aa5a7984f3966312e5e0ffd76f93ed6208f8 100644
53755432
--- a/Source/WebCore/platform/network/curl/CurlStream.cpp
@@ -5494,6 +5551,19 @@ index 3b6dea9ed2552d81aaf7e694a5f922e96dbf94d6..6b5bd9b9782b0fb55341e76fc3cff862
54945551
}
54955552

54965553
SocketStreamHandleImpl::~SocketStreamHandleImpl()
5554+
diff --git a/Source/WebCore/platform/network/soup/SocketStreamHandleImpl.h b/Source/WebCore/platform/network/soup/SocketStreamHandleImpl.h
5555+
index 3ecf866005da6da9cec7c7930e6a4f93cb39d6e0..d81dc9ac0c433e00ab4ad73e206856098ab9230e 100644
5556+
--- a/Source/WebCore/platform/network/soup/SocketStreamHandleImpl.h
5557+
+++ b/Source/WebCore/platform/network/soup/SocketStreamHandleImpl.h
5558+
@@ -47,7 +47,7 @@ class StorageSessionProvider;
5559+
5560+
class SocketStreamHandleImpl final : public SocketStreamHandle {
5561+
public:
5562+
- static Ref<SocketStreamHandleImpl> create(const URL&, SocketStreamHandleClient&, PAL::SessionID, const String&, SourceApplicationAuditToken&&, const StorageSessionProvider*)
5563+
+ static Ref<SocketStreamHandleImpl> create(const URL&, bool, SocketStreamHandleClient&, PAL::SessionID, const String&, SourceApplicationAuditToken&&, const StorageSessionProvider*)
5564+
{
5565+
RELEASE_ASSERT_NOT_REACHED();
5566+
}
54975567
diff --git a/Source/WebCore/platform/win/KeyEventWin.cpp b/Source/WebCore/platform/win/KeyEventWin.cpp
54985568
index 44737686187a06a92c408ea60b63a48ac8481334..c754a763688b52e7ddd47493296ef9b0c6adc527 100644
54995569
--- a/Source/WebCore/platform/win/KeyEventWin.cpp
@@ -5635,18 +5705,15 @@ index 099ce74a3e08a66a060fb3a6095c12ea38f5b612..157873fe8ad24728321029019a53000b
56355705
HashSet<Ref<NetworkResourceLoader>> m_keptAliveLoads;
56365706

56375707
diff --git a/Source/WebKit/NetworkProcess/NetworkSocketStream.cpp b/Source/WebKit/NetworkProcess/NetworkSocketStream.cpp
5638-
index d1fa427d82884fc43569d1bf0df7d728921502fc..59790afe7f4deedc69b3f020e23f2b50a38595cf 100644
5708+
index d1fa427d82884fc43569d1bf0df7d728921502fc..30450ab01cddfcd406e46ac8e08ac50a2983f7a6 100644
56395709
--- a/Source/WebKit/NetworkProcess/NetworkSocketStream.cpp
56405710
+++ b/Source/WebKit/NetworkProcess/NetworkSocketStream.cpp
5641-
@@ -43,7 +43,11 @@ Ref<NetworkSocketStream> NetworkSocketStream::create(NetworkProcess& networkProc
5711+
@@ -43,7 +43,7 @@ Ref<NetworkSocketStream> NetworkSocketStream::create(NetworkProcess& networkProc
56425712
NetworkSocketStream::NetworkSocketStream(NetworkProcess& networkProcess, URL&& url, PAL::SessionID sessionID, const String& credentialPartition, WebSocketIdentifier identifier, IPC::Connection& connection, SourceApplicationAuditToken&& auditData)
56435713
: m_identifier(identifier)
56445714
, m_connection(connection)
5645-
+#if OS(WINDOWS)
5715+
- , m_impl(SocketStreamHandleImpl::create(url, *this, sessionID, credentialPartition, WTFMove(auditData), NetworkStorageSessionProvider::create(networkProcess, sessionID).ptr()))
56465716
+ , m_impl(SocketStreamHandleImpl::create(url, networkProcess.networkSession(sessionID)->ignoreCertificateErrors(), *this, sessionID, credentialPartition, WTFMove(auditData), NetworkStorageSessionProvider::create(networkProcess, sessionID).ptr()))
5647-
+#else
5648-
, m_impl(SocketStreamHandleImpl::create(url, *this, sessionID, credentialPartition, WTFMove(auditData), NetworkStorageSessionProvider::create(networkProcess, sessionID).ptr()))
5649-
+#endif
56505717
{
56515718
}
56525719

0 commit comments

Comments
 (0)