diff options
author | Yuri Wiitala <miu@chromium.org> | 2019-11-14 14:13:18 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-11-14 22:23:01 +0000 |
commit | fb75b099385fa64438a5980c2b3c51691c4095f7 (patch) | |
tree | a0179b295cf8b78972c6ad306e5c9977a48c74bb /cast/sender | |
parent | c76b2713813be0171bd57393a5577662906c6d7a (diff) | |
download | openscreen-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.cc | 5 |
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)); } |