aboutsummaryrefslogtreecommitdiff
path: root/cast/sender
diff options
context:
space:
mode:
authorYuri Wiitala <miu@chromium.org>2019-11-14 14:13:18 -0800
committerCommit Bot <commit-bot@chromium.org>2019-11-14 22:23:01 +0000
commitfb75b099385fa64438a5980c2b3c51691c4095f7 (patch)
treea0179b295cf8b78972c6ad306e5c9977a48c74bb /cast/sender
parentc76b2713813be0171bd57393a5577662906c6d7a (diff)
downloadopenscreen-fb75b099385fa64438a5980c2b3c51691c4095f7.tar.gz
OpenScreen: Add WeakPtr, resolve some dangerous networking code issues.
Adds a simple openscreen::WeakPtr implementation, as a wrapper around std::weak_ptr<>, and having the same ownership/invalidation/threading semantics as Chromium's base::WeakPtr. Then: 1. Removed implementation from platform/api interface classes for TlsConnection and TlsConnectionFactory. Minor style fixes and comment tweaks. 2. Resolved all known use-after-free bugs/TODOs in UdpSocketPosix, TlsConnectionPosix, and TlsConnectionFactoryPosix. 3. Fixed a bug in CastSocket w.r.t. how it handles errors while flushing its "blocked messages" queue. 4. Minor style fixes in touched files. Bug: openscreen:71 Change-Id: I74ba83f17f56795d7565a271c933e3a75e572891 Reviewed-on: https://chromium-review.googlesource.com/c/openscreen/+/1898817 Commit-Queue: Yuri Wiitala <miu@chromium.org> Reviewed-by: Ryan Keane <rwkeane@google.com> Reviewed-by: mark a. foltz <mfoltz@chromium.org>
Diffstat (limited to 'cast/sender')
-rw-r--r--cast/sender/channel/sender_socket_factory.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/cast/sender/channel/sender_socket_factory.cc b/cast/sender/channel/sender_socket_factory.cc
index 83e73370..811f07df 100644
--- a/cast/sender/channel/sender_socket_factory.cc
+++ b/cast/sender/channel/sender_socket_factory.cc
@@ -6,6 +6,7 @@
#include "cast/common/channel/cast_socket.h"
#include "cast/sender/channel/message_util.h"
+#include "platform/base/tls_connect_options.h"
namespace cast {
namespace channel {
@@ -51,7 +52,7 @@ void SenderSocketFactory::OnConnected(
TlsConnectionFactory* factory,
X509* peer_cert,
std::unique_ptr<TlsConnection> connection) {
- const IPEndpoint& endpoint = connection->remote_address();
+ const IPEndpoint& endpoint = connection->GetRemoteEndpoint();
auto it = FindPendingConnection(endpoint);
if (it == pending_connections_.end()) {
OSP_DLOG_ERROR << "TLS connection succeeded for unknown endpoint: "
@@ -158,7 +159,7 @@ void SenderSocketFactory::OnMessage(CastSocket* socket, CastMessage message) {
return;
}
- pending->socket->set_client(pending->client);
+ pending->socket->SetClient(pending->client);
client_->OnConnected(this, pending->endpoint, std::move(pending->socket));
}