diff --git a/rtc_base/proxy_server.cc b/rtc_base/proxy_server.cc index 3420404632..a1477c8721 100644 --- a/rtc_base/proxy_server.cc +++ b/rtc_base/proxy_server.cc @@ -13,6 +13,7 @@ #include #include +#include "absl/memory/memory.h" #include "rtc_base/checks.h" #include "rtc_base/logging.h" #include "rtc_base/socket_factory.h" @@ -35,12 +36,7 @@ ProxyServer::ProxyServer(SocketFactory* int_factory, server_socket_->SignalReadEvent.connect(this, &ProxyServer::OnAcceptEvent); } -ProxyServer::~ProxyServer() { - for (BindingList::iterator it = bindings_.begin(); it != bindings_.end(); - ++it) { - delete (*it); - } -} +ProxyServer::~ProxyServer() = default; SocketAddress ProxyServer::GetServerAddress() { return server_socket_->GetLocalAddress(); @@ -55,20 +51,14 @@ void ProxyServer::OnAcceptEvent(AsyncSocket* socket) { ext_factory_->CreateAsyncSocket(ext_ip_.family(), SOCK_STREAM); if (ext_socket) { ext_socket->Bind(ext_ip_); - bindings_.push_back(new ProxyBinding(wrapped_socket, ext_socket)); + bindings_.emplace_back( + absl::make_unique(wrapped_socket, ext_socket)); } else { RTC_LOG(LS_ERROR) << "Unable to create external socket on proxy accept event"; } } -void ProxyServer::OnBindingDestroyed(ProxyBinding* binding) { - BindingList::iterator it = - std::find(bindings_.begin(), bindings_.end(), binding); - delete (*it); - bindings_.erase(it); -} - // ProxyBinding ProxyBinding::ProxyBinding(AsyncProxyServerSocket* int_socket, AsyncSocket* ext_socket) diff --git a/rtc_base/proxy_server.h b/rtc_base/proxy_server.h index ef4a3c7866..c7e6078f1d 100644 --- a/rtc_base/proxy_server.h +++ b/rtc_base/proxy_server.h @@ -11,8 +11,10 @@ #ifndef RTC_BASE_PROXY_SERVER_H_ #define RTC_BASE_PROXY_SERVER_H_ -#include #include +#include + +#include "absl/memory/memory.h" #include "rtc_base/async_socket.h" #include "rtc_base/constructor_magic.h" #include "rtc_base/server_socket_adapters.h" @@ -74,14 +76,12 @@ class ProxyServer : public sigslot::has_slots<> { protected: void OnAcceptEvent(AsyncSocket* socket); virtual AsyncProxyServerSocket* WrapSocket(AsyncSocket* socket) = 0; - void OnBindingDestroyed(ProxyBinding* binding); private: - typedef std::list BindingList; SocketFactory* ext_factory_; SocketAddress ext_ip_; std::unique_ptr server_socket_; - BindingList bindings_; + std::vector> bindings_; RTC_DISALLOW_COPY_AND_ASSIGN(ProxyServer); };