Index: net/socket/tcp_client_socket_libevent.cc |
diff --git a/net/socket/tcp_client_socket_libevent.cc b/net/socket/tcp_client_socket_libevent.cc |
index 52956aa6f15866f1758d34a7dbcfb1676a34dcfb..83528dd70412307c685e76963c35084e08a7f301 100644 |
--- a/net/socket/tcp_client_socket_libevent.cc |
+++ b/net/socket/tcp_client_socket_libevent.cc |
@@ -19,6 +19,7 @@ |
#include "base/metrics/stats_counters.h" |
#include "base/string_util.h" |
#include "net/base/address_list_net_log_param.h" |
+#include "net/base/connection_type_histograms.h" |
#include "net/base/io_buffer.h" |
#include "net/base/net_errors.h" |
#include "net/base/net_log.h" |
@@ -522,10 +523,36 @@ int TCPClientSocketLibevent::SetupSocket() { |
} |
void TCPClientSocketLibevent::LogConnectCompletion(int net_error) { |
- scoped_refptr<NetLog::EventParameters> params; |
- if (net_error != OK) |
- params = new NetLogIntegerParameter("net_error", net_error); |
- net_log_.EndEvent(NetLog::TYPE_TCP_CONNECT, params); |
+ if (net_error == OK) |
+ UpdateConnectionTypeHistograms(CONNECTION_ANY); |
+ |
+ if (net_error != OK) { |
+ net_log_.EndEvent(NetLog::TYPE_TCP_CONNECT, |
+ make_scoped_refptr( |
+ new NetLogIntegerParameter("net_error", net_error))); |
+ return; |
+ } |
+ |
+ struct sockaddr_storage source_address; |
+ socklen_t addrlen = sizeof(source_address); |
+ int rv = getsockname( |
+ socket_, reinterpret_cast<struct sockaddr*>(&source_address), &addrlen); |
+ if (rv != 0) { |
+ PLOG(ERROR) << "getsockname() [rv: " << rv << "] error: "; |
+ NOTREACHED(); |
+ scoped_refptr<NetLog::EventParameters> params; |
+ net_log_.EndEvent(NetLog::TYPE_TCP_CONNECT, NULL); |
+ return; |
+ } |
+ |
+ const std::string source_address_str = |
+ NetAddressToStringWithPort( |
+ reinterpret_cast<const struct sockaddr*>(&source_address), |
+ sizeof(source_address)); |
+ net_log_.EndEvent(NetLog::TYPE_TCP_CONNECT, |
+ make_scoped_refptr(new NetLogStringParameter( |
+ "source address", |
+ source_address_str))); |
} |
void TCPClientSocketLibevent::DoReadCallback(int rv) { |