| Index: chrome/browser/sync/notifier/communicator/ssl_socket_adapter.cc
|
| diff --git a/chrome/browser/sync/notifier/communicator/ssl_socket_adapter.cc b/chrome/browser/sync/notifier/communicator/ssl_socket_adapter.cc
|
| index 414cc79f3159693b797afb2701bd5931b7b51f42..1a5619cf18c254e5da859aaee315c5029a40b6e5 100755
|
| --- a/chrome/browser/sync/notifier/communicator/ssl_socket_adapter.cc
|
| +++ b/chrome/browser/sync/notifier/communicator/ssl_socket_adapter.cc
|
| @@ -8,8 +8,10 @@
|
| #include "base/message_loop.h"
|
| #include "chrome/browser/net/url_request_context_getter.h"
|
| #include "chrome/browser/profile.h"
|
| +#include "net/base/address_list.h"
|
| #include "net/base/net_errors.h"
|
| #include "net/base/ssl_config_service.h"
|
| +#include "net/base/sys_addrinfo.h"
|
| #include "net/socket/client_socket_factory.h"
|
| #include "net/url_request/url_request_context.h"
|
|
|
| @@ -254,10 +256,23 @@ bool TransportSocket::IsConnectedAndIdle() const {
|
| return false;
|
| }
|
|
|
| -int TransportSocket::GetPeerName(struct sockaddr* name, socklen_t* namelen) {
|
| - talk_base::SocketAddress address = socket_->GetRemoteAddress();
|
| - address.ToSockAddr(reinterpret_cast<sockaddr_in *>(name));
|
| - return 0;
|
| +int TransportSocket::GetPeerAddress(net::AddressList* address) const {
|
| + talk_base::SocketAddress socket_address = socket_->GetRemoteAddress();
|
| +
|
| + // libjingle supports only IPv4 addresses.
|
| + sockaddr_in ipv4addr;
|
| + socket_address.ToSockAddr(&ipv4addr);
|
| +
|
| + struct addrinfo ai;
|
| + memset(&ai, sizeof(ai), 0);
|
| + ai.ai_family = ipv4addr.sin_family;
|
| + ai.ai_socktype = SOCK_STREAM;
|
| + ai.ai_protocol = IPPROTO_TCP;
|
| + ai.ai_addr = reinterpret_cast<struct sockaddr*>(&ipv4addr);
|
| + ai.ai_addrlen = sizeof(ipv4addr);
|
| +
|
| + address->Copy(&ai, false);
|
| + return net::OK;
|
| }
|
|
|
| int TransportSocket::Read(net::IOBuffer* buf, int buf_len,
|
|
|