summaryrefslogtreecommitdiffstats
path: root/net/socket/tcp_client_socket_win.cc
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-19 23:49:35 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-19 23:49:35 +0000
commite7f74dada8e347bde1e7e88e88d6fd3c9882375a (patch)
treed563b0762ffe6062005b24e277dd1bb4a8019aef /net/socket/tcp_client_socket_win.cc
parent15ff0118ad82bfc4b89ad612f130fed0df512612 (diff)
downloadchromium_src-e7f74dada8e347bde1e7e88e88d6fd3c9882375a.zip
chromium_src-e7f74dada8e347bde1e7e88e88d6fd3c9882375a.tar.gz
chromium_src-e7f74dada8e347bde1e7e88e88d6fd3c9882375a.tar.bz2
Added GetLocalAddress() in net::ClientSocket.
BUG=None TEST=Unittests Review URL: http://codereview.chromium.org/6840033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@82190 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket/tcp_client_socket_win.cc')
-rw-r--r--net/socket/tcp_client_socket_win.cc17
1 files changed, 17 insertions, 0 deletions
diff --git a/net/socket/tcp_client_socket_win.cc b/net/socket/tcp_client_socket_win.cc
index eec7dbb..de5ff61 100644
--- a/net/socket/tcp_client_socket_win.cc
+++ b/net/socket/tcp_client_socket_win.cc
@@ -16,6 +16,7 @@
#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/ip_endpoint.h"
#include "net/base/net_errors.h"
#include "net/base/net_log.h"
#include "net/base/net_util.h"
@@ -471,6 +472,22 @@ int TCPClientSocketWin::GetPeerAddress(AddressList* address) const {
return OK;
}
+int TCPClientSocketWin::GetLocalAddress(IPEndPoint* address) const {
+ DCHECK(CalledOnValidThread());
+ DCHECK(address);
+ if (!IsConnected())
+ return ERR_SOCKET_NOT_CONNECTED;
+
+ struct sockaddr_storage addr_storage;
+ socklen_t addr_len = sizeof(addr_storage);
+ struct sockaddr* addr = reinterpret_cast<struct sockaddr*>(&addr_storage);
+ if (getsockname(socket_, addr, &addr_len))
+ return MapSystemError(WSAGetLastError());
+ if (!address->FromSockAddr(addr, addr_len))
+ return ERR_FAILED;
+ return OK;
+}
+
void TCPClientSocketWin::SetSubresourceSpeculation() {
use_history_.set_subresource_speculation();
}