Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(293)

Side by Side Diff: net/socket/tcp_socket_win.cc

Issue 1062413002: Remove unnecessary instrumentation for several jank bugs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Compile fixes Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/socket/tcp_client_socket.cc ('k') | net/socket/transport_client_socket_pool.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/socket/tcp_socket.h" 5 #include "net/socket/tcp_socket.h"
6 #include "net/socket/tcp_socket_win.h" 6 #include "net/socket/tcp_socket_win.h"
7 7
8 #include <mstcpip.h> 8 #include <mstcpip.h>
9 9
10 #include "base/callback_helpers.h" 10 #include "base/callback_helpers.h"
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 accept_socket_ = socket; 407 accept_socket_ = socket;
408 accept_address_ = address; 408 accept_address_ = address;
409 accept_callback_ = callback; 409 accept_callback_ = callback;
410 } 410 }
411 411
412 return result; 412 return result;
413 } 413 }
414 414
415 int TCPSocketWin::Connect(const IPEndPoint& address, 415 int TCPSocketWin::Connect(const IPEndPoint& address,
416 const CompletionCallback& callback) { 416 const CompletionCallback& callback) {
417 // TODO(vadimt): Remove ScopedTracker below once crbug.com/436634 is fixed.
418 tracked_objects::ScopedTracker tracking_profile(
419 FROM_HERE_WITH_EXPLICIT_FUNCTION("436634 TCPSocketWin::Connect"));
420
421 DCHECK(CalledOnValidThread()); 417 DCHECK(CalledOnValidThread());
422 DCHECK_NE(socket_, INVALID_SOCKET); 418 DCHECK_NE(socket_, INVALID_SOCKET);
423 DCHECK(!waiting_connect_); 419 DCHECK(!waiting_connect_);
424 420
425 // |peer_address_| and |core_| will be non-NULL if Connect() has been called. 421 // |peer_address_| and |core_| will be non-NULL if Connect() has been called.
426 // Unless Close() is called to reset the internal state, a second call to 422 // Unless Close() is called to reset the internal state, a second call to
427 // Connect() is not allowed. 423 // Connect() is not allowed.
428 // Please note that we enforce this even if the previous Connect() has 424 // Please note that we enforce this even if the previous Connect() has
429 // completed and failed. Although it is allowed to connect the same |socket_| 425 // completed and failed. Although it is allowed to connect the same |socket_|
430 // again after a connection attempt failed on Windows, it results in 426 // again after a connection attempt failed on Windows, it results in
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after
774 // have a chance to accept it. 770 // have a chance to accept it.
775 DCHECK(ev.lNetworkEvents == 0); 771 DCHECK(ev.lNetworkEvents == 0);
776 772
777 // Start watching the next FD_ACCEPT event. 773 // Start watching the next FD_ACCEPT event.
778 WSAEventSelect(socket_, accept_event_, FD_ACCEPT); 774 WSAEventSelect(socket_, accept_event_, FD_ACCEPT);
779 accept_watcher_.StartWatching(accept_event_, this); 775 accept_watcher_.StartWatching(accept_event_, this);
780 } 776 }
781 } 777 }
782 778
783 int TCPSocketWin::DoConnect() { 779 int TCPSocketWin::DoConnect() {
784 // TODO(vadimt): Remove ScopedTracker below once crbug.com/436634 is fixed.
785 tracked_objects::ScopedTracker tracking_profile(
786 FROM_HERE_WITH_EXPLICIT_FUNCTION("436634 TCPSocketWin::DoConnect"));
787
788 DCHECK_EQ(connect_os_error_, 0); 780 DCHECK_EQ(connect_os_error_, 0);
789 DCHECK(!core_.get()); 781 DCHECK(!core_.get());
790 782
791 net_log_.BeginEvent(NetLog::TYPE_TCP_CONNECT_ATTEMPT, 783 net_log_.BeginEvent(NetLog::TYPE_TCP_CONNECT_ATTEMPT,
792 CreateNetLogIPEndPointCallback(peer_address_.get())); 784 CreateNetLogIPEndPointCallback(peer_address_.get()));
793 785
794 core_ = new Core(this); 786 core_ = new Core(this);
795 787
796 // TODO(vadimt): Remove ScopedTracker below once crbug.com/436634 is fixed.
797 tracked_objects::ScopedTracker tracking_profile1(
798 FROM_HERE_WITH_EXPLICIT_FUNCTION("436634 TCPSocketWin::DoConnect1"));
799
800 // WSAEventSelect sets the socket to non-blocking mode as a side effect. 788 // WSAEventSelect sets the socket to non-blocking mode as a side effect.
801 // Our connect() and recv() calls require that the socket be non-blocking. 789 // Our connect() and recv() calls require that the socket be non-blocking.
802 WSAEventSelect(socket_, core_->read_overlapped_.hEvent, FD_CONNECT); 790 WSAEventSelect(socket_, core_->read_overlapped_.hEvent, FD_CONNECT);
803 791
804 SockaddrStorage storage; 792 SockaddrStorage storage;
805 if (!peer_address_->ToSockAddr(storage.addr, &storage.addr_len)) 793 if (!peer_address_->ToSockAddr(storage.addr, &storage.addr_len))
806 return ERR_ADDRESS_INVALID; 794 return ERR_ADDRESS_INVALID;
807 795
808 // TODO(vadimt): Remove ScopedTracker below once crbug.com/436634 is fixed. 796 int result;
809 tracked_objects::ScopedTracker tracking_profile2( 797 {
810 FROM_HERE_WITH_EXPLICIT_FUNCTION("436634 TCPSocketWin::DoConnect2")); 798 // TODO(ricea): Remove ScopedTracker below once crbug.com/436634 is fixed.
799 tracked_objects::ScopedTracker tracking_profile(
800 FROM_HERE_WITH_EXPLICIT_FUNCTION("436634 connect()"));
801 result = connect(socket_, storage.addr, storage.addr_len);
802 }
811 803
812 if (!connect(socket_, storage.addr, storage.addr_len)) { 804 if (!result) {
813 // TODO(vadimt): Remove ScopedTracker below once crbug.com/436634 is fixed.
814 tracked_objects::ScopedTracker tracking_profile3(
815 FROM_HERE_WITH_EXPLICIT_FUNCTION("436634 TCPSocketWin::DoConnect3"));
816
817 // Connected without waiting! 805 // Connected without waiting!
818 // 806 //
819 // The MSDN page for connect says: 807 // The MSDN page for connect says:
820 // With a nonblocking socket, the connection attempt cannot be completed 808 // With a nonblocking socket, the connection attempt cannot be completed
821 // immediately. In this case, connect will return SOCKET_ERROR, and 809 // immediately. In this case, connect will return SOCKET_ERROR, and
822 // WSAGetLastError will return WSAEWOULDBLOCK. 810 // WSAGetLastError will return WSAEWOULDBLOCK.
823 // which implies that for a nonblocking socket, connect never returns 0. 811 // which implies that for a nonblocking socket, connect never returns 0.
824 // It's not documented whether the event object will be signaled or not 812 // It's not documented whether the event object will be signaled or not
825 // if connect does return 0. So the code below is essentially dead code 813 // if connect does return 0. So the code below is essentially dead code
826 // and we don't know if it's correct. 814 // and we don't know if it's correct.
827 NOTREACHED(); 815 NOTREACHED();
828 816
829 if (ResetEventIfSignaled(core_->read_overlapped_.hEvent)) 817 if (ResetEventIfSignaled(core_->read_overlapped_.hEvent))
830 return OK; 818 return OK;
831 } else { 819 } else {
832 int os_error = WSAGetLastError(); 820 int os_error = WSAGetLastError();
833
834 // TODO(vadimt): Remove ScopedTracker below once crbug.com/436634 is fixed.
835 tracked_objects::ScopedTracker tracking_profile4(
836 FROM_HERE_WITH_EXPLICIT_FUNCTION("436634 TCPSocketWin::DoConnect4"));
837
838 if (os_error != WSAEWOULDBLOCK) { 821 if (os_error != WSAEWOULDBLOCK) {
839 LOG(ERROR) << "connect failed: " << os_error; 822 LOG(ERROR) << "connect failed: " << os_error;
840 connect_os_error_ = os_error; 823 connect_os_error_ = os_error;
841 int rv = MapConnectError(os_error); 824 int rv = MapConnectError(os_error);
842 CHECK_NE(ERR_IO_PENDING, rv); 825 CHECK_NE(ERR_IO_PENDING, rv);
843 return rv; 826 return rv;
844 } 827 }
845 } 828 }
846 829
847 // TODO(vadimt): Remove ScopedTracker below once crbug.com/436634 is fixed. 830 // TODO(ricea): Remove ScopedTracker below once crbug.com/436634 is fixed.
848 tracked_objects::ScopedTracker tracking_profile5( 831 tracked_objects::ScopedTracker tracking_profile(
849 FROM_HERE_WITH_EXPLICIT_FUNCTION("436634 TCPSocketWin::DoConnect5")); 832 FROM_HERE_WITH_EXPLICIT_FUNCTION("436634 WatchForRead()"));
850 833
851 core_->WatchForRead(); 834 core_->WatchForRead();
852 return ERR_IO_PENDING; 835 return ERR_IO_PENDING;
853 } 836 }
854 837
855 void TCPSocketWin::DoConnectComplete(int result) { 838 void TCPSocketWin::DoConnectComplete(int result) {
856 // Log the end of this attempt (and any OS error it threw). 839 // Log the end of this attempt (and any OS error it threw).
857 int os_error = connect_os_error_; 840 int os_error = connect_os_error_;
858 connect_os_error_ = 0; 841 connect_os_error_ = 0;
859 if (result != OK) { 842 if (result != OK) {
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 1037
1055 waiting_read_ = false; 1038 waiting_read_ = false;
1056 core_->read_iobuffer_ = NULL; 1039 core_->read_iobuffer_ = NULL;
1057 core_->read_buffer_length_ = 0; 1040 core_->read_buffer_length_ = 0;
1058 1041
1059 DCHECK_NE(rv, ERR_IO_PENDING); 1042 DCHECK_NE(rv, ERR_IO_PENDING);
1060 base::ResetAndReturn(&read_callback_).Run(rv); 1043 base::ResetAndReturn(&read_callback_).Run(rv);
1061 } 1044 }
1062 1045
1063 } // namespace net 1046 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/tcp_client_socket.cc ('k') | net/socket/transport_client_socket_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698