diff options
author | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-19 23:49:35 +0000 |
---|---|---|
committer | sergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-19 23:49:35 +0000 |
commit | e7f74dada8e347bde1e7e88e88d6fd3c9882375a (patch) | |
tree | d563b0762ffe6062005b24e277dd1bb4a8019aef /net/socket/tcp_client_socket_libevent.cc | |
parent | 15ff0118ad82bfc4b89ad612f130fed0df512612 (diff) | |
download | chromium_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_libevent.cc')
-rw-r--r-- | net/socket/tcp_client_socket_libevent.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/net/socket/tcp_client_socket_libevent.cc b/net/socket/tcp_client_socket_libevent.cc index 1c7cdc0..d386bae 100644 --- a/net/socket/tcp_client_socket_libevent.cc +++ b/net/socket/tcp_client_socket_libevent.cc @@ -21,6 +21,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" @@ -618,6 +619,23 @@ int TCPClientSocketLibevent::GetPeerAddress(AddressList* address) const { return OK; } +int TCPClientSocketLibevent::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(errno); + if (!address->FromSockAddr(addr, addr_len)) + return ERR_FAILED; + + return OK; +} + const BoundNetLog& TCPClientSocketLibevent::NetLog() const { return net_log_; } |