From b0cb4d1b5df89528e4d84e8c5a917ff0af363d8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Fri, 20 Aug 2021 11:04:04 +0200 Subject: [PATCH] Improve error handling for AsyncSSLSocket::OnConnectEvent Don't DCHECK that network send is successful, it may fail, e.g., EPIPE if remote end has disconnected. Bug: None Change-Id: I7ccff072420498b60fe16598110da91b01bfe7cb Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/229384 Reviewed-by: Taylor Brandstetter Reviewed-by: Tommi Commit-Queue: Niels Moller Cr-Commit-Position: refs/heads/master@{#34821} --- rtc_base/socket_adapters.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rtc_base/socket_adapters.cc b/rtc_base/socket_adapters.cc index 08e967b6fa..cc541a42c6 100644 --- a/rtc_base/socket_adapters.cc +++ b/rtc_base/socket_adapters.cc @@ -182,7 +182,10 @@ void AsyncSSLSocket::OnConnectEvent(Socket* socket) { RTC_DCHECK(socket == GetSocket()); // TODO: we could buffer output too... const int res = DirectSend(kSslClientHello, sizeof(kSslClientHello)); - RTC_DCHECK_EQ(sizeof(kSslClientHello), res); + if (res != sizeof(kSslClientHello)) { + Close(); + SignalCloseEvent(this, 0); + } } void AsyncSSLSocket::ProcessInput(char* data, size_t* len) {