From 14c288077611627497ec531418d08e5e17be6f56 Mon Sep 17 00:00:00 2001 From: "vitalybuka@chromium.org" Date: Fri, 7 Mar 2014 19:42:05 +0000 Subject: [PATCH] Revert 255311 "Bind before sandbox lockdown on Windows." Suspected as crasher. > Bind before sandbox lockdown on Windows. > Linux is unaffected. All changed code already is inside sandbox. > > BUG=348692 > > Review URL: https://codereview.chromium.org/185293014 TBR=vitalybuka@chromium.org Review URL: https://codereview.chromium.org/191403002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@255685 0039d316-1c4b-4281-b951-d872f2087c98 --- .../service_discovery_message_handler.cc | 30 ++++++++++++---------- .../renderer_host/p2p/socket_host_udp_unittest.cc | 4 --- net/dns/mock_mdns_socket_factory.h | 2 -- net/udp/datagram_server_socket.h | 3 --- net/udp/udp_server_socket.cc | 4 --- net/udp/udp_server_socket.h | 1 - net/udp/udp_socket_libevent.cc | 4 --- net/udp/udp_socket_libevent.h | 3 --- net/udp/udp_socket_win.cc | 4 --- net/udp/udp_socket_win.h | 3 --- 10 files changed, 17 insertions(+), 41 deletions(-) diff --git a/chrome/utility/local_discovery/service_discovery_message_handler.cc b/chrome/utility/local_discovery/service_discovery_message_handler.cc index 72d99d61c1cb..3a73ad72bcf8 100644 --- a/chrome/utility/local_discovery/service_discovery_message_handler.cc +++ b/chrome/utility/local_discovery/service_discovery_message_handler.cc @@ -72,28 +72,32 @@ class PreCreatedMDnsSocketFactory : public net::MDnsSocketFactory { // net::MDnsSocketFactory implementation: virtual void CreateSockets( ScopedVector* sockets) OVERRIDE { - sockets->swap(sockets_); - Reset(); + for (size_t i = 0; i < sockets_.size(); ++i) { + // Takes ownership of sockets_[i].socket; + ScopedSocketFactory platform_factory(sockets_[i].socket); + scoped_ptr socket( + net::CreateAndBindMDnsSocket(sockets_[i].address_family, + sockets_[i].interface_index)); + if (socket) + sockets->push_back(socket.release()); + } + sockets_.clear(); } - void AddSocket(const SocketInfo& socket_info) { - // Takes ownership of socket_info.socket; - ScopedSocketFactory platform_factory(socket_info.socket); - scoped_ptr socket( - net::CreateAndBindMDnsSocket(socket_info.address_family, - socket_info.interface_index)); - if (socket) { - socket->DetachFromThread(); - sockets_.push_back(socket.release()); - } + void AddSocket(const SocketInfo& socket) { + sockets_.push_back(socket); } void Reset() { + for (size_t i = 0; i < sockets_.size(); ++i) { + if (sockets_[i].socket != net::kInvalidSocket) + ClosePlatformSocket(sockets_[i].socket); + } sockets_.clear(); } private: - ScopedVector sockets_; + std::vector sockets_; DISALLOW_COPY_AND_ASSIGN(PreCreatedMDnsSocketFactory); }; diff --git a/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc b/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc index c0b3d35fc6d6..42eb3e5ce30f 100644 --- a/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc +++ b/content/browser/renderer_host/p2p/socket_host_udp_unittest.cc @@ -160,10 +160,6 @@ class FakeDatagramServerSocket : public net::DatagramServerSocket { return net::ERR_NOT_IMPLEMENTED; } - virtual void DetachFromThread() OVERRIDE { - NOTIMPLEMENTED(); - } - private: net::IPEndPoint address_; std::deque* sent_packets_; diff --git a/net/dns/mock_mdns_socket_factory.h b/net/dns/mock_mdns_socket_factory.h index 04bb837ca628..7cc8fed9ab33 100644 --- a/net/dns/mock_mdns_socket_factory.h +++ b/net/dns/mock_mdns_socket_factory.h @@ -54,8 +54,6 @@ class MockMDnsDatagramServerSocket : public DatagramServerSocket { MOCK_METHOD1(SetDiffServCodePoint, int(DiffServCodePoint dscp)); - MOCK_METHOD0(DetachFromThread, void()); - void SetResponsePacket(std::string response_packet); int HandleRecvNow(IOBuffer* buffer, int size, IPEndPoint* address, diff --git a/net/udp/datagram_server_socket.h b/net/udp/datagram_server_socket.h index a7191d12c02f..ed5ab7a7c4fa 100644 --- a/net/udp/datagram_server_socket.h +++ b/net/udp/datagram_server_socket.h @@ -103,9 +103,6 @@ class NET_EXPORT DatagramServerSocket : public DatagramSocket { // Set the Differentiated Services Code Point. May do nothing on // some platforms. Returns a network error code. virtual int SetDiffServCodePoint(DiffServCodePoint dscp) = 0; - - // Resets the thread to be used for thread-safety checks. - virtual void DetachFromThread() = 0; }; } // namespace net diff --git a/net/udp/udp_server_socket.cc b/net/udp/udp_server_socket.cc index ad19655aa54b..99d741b4700d 100644 --- a/net/udp/udp_server_socket.cc +++ b/net/udp/udp_server_socket.cc @@ -93,8 +93,4 @@ int UDPServerSocket::SetDiffServCodePoint(DiffServCodePoint dscp) { return socket_.SetDiffServCodePoint(dscp); } -void UDPServerSocket::DetachFromThread() { - socket_.DetachFromThread(); -} - } // namespace net diff --git a/net/udp/udp_server_socket.h b/net/udp/udp_server_socket.h index 46e8b78416cf..c593413d6287 100644 --- a/net/udp/udp_server_socket.h +++ b/net/udp/udp_server_socket.h @@ -45,7 +45,6 @@ class NET_EXPORT UDPServerSocket : public DatagramServerSocket { virtual int SetMulticastTimeToLive(int time_to_live) OVERRIDE; virtual int SetMulticastLoopbackMode(bool loopback) OVERRIDE; virtual int SetDiffServCodePoint(DiffServCodePoint dscp) OVERRIDE; - virtual void DetachFromThread() OVERRIDE; private: UDPSocket socket_; diff --git a/net/udp/udp_socket_libevent.cc b/net/udp/udp_socket_libevent.cc index 4719df1fd0bf..d794e3bcc181 100644 --- a/net/udp/udp_socket_libevent.cc +++ b/net/udp/udp_socket_libevent.cc @@ -767,8 +767,4 @@ int UDPSocketLibevent::SetDiffServCodePoint(DiffServCodePoint dscp) { return OK; } -void UDPSocketLibevent::DetachFromThread() { - base::NonThreadSafe::DetachFromThread(); -} - } // namespace net diff --git a/net/udp/udp_socket_libevent.h b/net/udp/udp_socket_libevent.h index 130dcaf60d6f..2d1cefd3aa99 100644 --- a/net/udp/udp_socket_libevent.h +++ b/net/udp/udp_socket_libevent.h @@ -163,9 +163,6 @@ class NET_EXPORT UDPSocketLibevent : public base::NonThreadSafe { // Return a network error code. int SetDiffServCodePoint(DiffServCodePoint dscp); - // Resets the thread to be used for thread-safety checks. - void DetachFromThread(); - private: enum SocketOptions { SOCKET_OPTION_REUSE_ADDRESS = 1 << 0, diff --git a/net/udp/udp_socket_win.cc b/net/udp/udp_socket_win.cc index f08403719348..cd4ec4a1ec76 100644 --- a/net/udp/udp_socket_win.cc +++ b/net/udp/udp_socket_win.cc @@ -810,8 +810,4 @@ int UDPSocketWin::SetDiffServCodePoint(DiffServCodePoint dscp) { return ERR_NOT_IMPLEMENTED; } -void UDPSocketWin::DetachFromThread() { - base::NonThreadSafe::DetachFromThread(); -} - } // namespace net diff --git a/net/udp/udp_socket_win.h b/net/udp/udp_socket_win.h index 28b7d4ae6699..2f24877c1e01 100644 --- a/net/udp/udp_socket_win.h +++ b/net/udp/udp_socket_win.h @@ -161,9 +161,6 @@ class NET_EXPORT UDPSocketWin : NON_EXPORTED_BASE(public base::NonThreadSafe) { // do anything on some platforms. int SetDiffServCodePoint(DiffServCodePoint dscp); - // Resets the thread to be used for thread-safety checks. - void DetachFromThread(); - private: enum SocketOptions { SOCKET_OPTION_REUSE_ADDRESS = 1 << 0, -- 2.11.4.GIT