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

Unified Diff: jingle/notifier/base/chrome_async_socket.cc

Issue 10389098: [Sync] Make ChromeAsyncSocket use only the hostname on connect (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 8 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « jingle/notifier/base/chrome_async_socket.h ('k') | jingle/notifier/base/chrome_async_socket_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: jingle/notifier/base/chrome_async_socket.cc
diff --git a/jingle/notifier/base/chrome_async_socket.cc b/jingle/notifier/base/chrome_async_socket.cc
index 1fba65cf36c10b5fb93cd1d0fa7b11193cd0a6cb..ca2fde4c01a6389df3eb2791267d99f25416aacc 100644
--- a/jingle/notifier/base/chrome_async_socket.cc
+++ b/jingle/notifier/base/chrome_async_socket.cc
@@ -19,7 +19,6 @@
#include "net/base/io_buffer.h"
#include "net/base/net_util.h"
#include "net/base/ssl_config_service.h"
-#include "net/socket/client_socket_factory.h"
#include "net/socket/client_socket_handle.h"
#include "net/socket/ssl_client_socket.h"
#include "net/socket/tcp_client_socket.h"
@@ -28,14 +27,14 @@
namespace notifier {
ChromeAsyncSocket::ChromeAsyncSocket(
- ResolvingClientSocketFactory* client_socket_factory,
+ ResolvingClientSocketFactory* resolving_client_socket_factory,
size_t read_buf_size,
size_t write_buf_size)
- : client_socket_factory_(client_socket_factory),
+ : ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)),
+ resolving_client_socket_factory_(resolving_client_socket_factory),
state_(STATE_CLOSED),
error_(ERROR_NONE),
net_error_(net::OK),
- ALLOW_THIS_IN_INITIALIZER_LIST(weak_factory_(this)),
read_state_(IDLE),
read_buf_(new net::IOBufferWithSize(read_buf_size)),
read_start_(0U),
@@ -43,7 +42,7 @@ ChromeAsyncSocket::ChromeAsyncSocket(
write_state_(IDLE),
write_buf_(new net::IOBufferWithSize(write_buf_size)),
write_end_(0U) {
- DCHECK(client_socket_factory_.get());
+ DCHECK(resolving_client_socket_factory_.get());
DCHECK_GT(read_buf_size, 0U);
DCHECK_GT(write_buf_size, 0U);
}
@@ -91,8 +90,7 @@ bool ChromeAsyncSocket::Connect(const talk_base::SocketAddress& address) {
DoNonNetError(ERROR_WRONGSTATE);
return false;
}
- // We can't work with an empty hostname and IP address.
- if (address.hostname().empty() && (address.ip() == 0)) {
+ if (address.hostname().empty() || address.port() == 0) {
DoNonNetError(ERROR_DNS);
return false;
}
@@ -103,16 +101,17 @@ bool ChromeAsyncSocket::Connect(const talk_base::SocketAddress& address) {
state_ = STATE_CONNECTING;
- DCHECK_EQ(false, weak_factory_.HasWeakPtrs());
+ DCHECK(!weak_ptr_factory_.HasWeakPtrs());
+ weak_ptr_factory_.InvalidateWeakPtrs();
- net::HostPortPair dest_host_port_pair(address.IPAsString(), address.port());
+ net::HostPortPair dest_host_port_pair(address.hostname(), address.port());
transport_socket_.reset(
- client_socket_factory_->CreateTransportClientSocket(
+ resolving_client_socket_factory_->CreateTransportClientSocket(
dest_host_port_pair));
int status = transport_socket_->Connect(
base::Bind(&ChromeAsyncSocket::ProcessConnectDone,
- base::Unretained(this)));
+ weak_ptr_factory_.GetWeakPtr()));
if (status != net::ERR_IO_PENDING) {
// We defer execution of ProcessConnectDone instead of calling it
// directly here as the caller may not expect an error/close to
@@ -120,9 +119,10 @@ bool ChromeAsyncSocket::Connect(const talk_base::SocketAddress& address) {
// the connect always happens asynchronously.
MessageLoop* message_loop = MessageLoop::current();
CHECK(message_loop);
- message_loop->PostTask(FROM_HERE,
- base::Bind(&ChromeAsyncSocket::ProcessConnectDone,
- weak_factory_.GetWeakPtr(), status));
+ message_loop->PostTask(
+ FROM_HERE,
+ base::Bind(&ChromeAsyncSocket::ProcessConnectDone,
+ weak_ptr_factory_.GetWeakPtr(), status));
}
return true;
}
@@ -158,7 +158,8 @@ void ChromeAsyncSocket::PostDoRead() {
CHECK(message_loop);
message_loop->PostTask(
FROM_HERE,
- base::Bind(&ChromeAsyncSocket::DoRead, weak_factory_.GetWeakPtr()));
+ base::Bind(&ChromeAsyncSocket::DoRead,
+ weak_ptr_factory_.GetWeakPtr()));
read_state_ = POSTED;
}
@@ -177,7 +178,7 @@ void ChromeAsyncSocket::DoRead() {
transport_socket_->Read(
read_buf_.get(), read_buf_->size(),
base::Bind(&ChromeAsyncSocket::ProcessReadDone,
- base::Unretained(this)));
+ weak_ptr_factory_.GetWeakPtr()));
read_state_ = PENDING;
if (status != net::ERR_IO_PENDING) {
ProcessReadDone(status);
@@ -291,7 +292,8 @@ void ChromeAsyncSocket::PostDoWrite() {
CHECK(message_loop);
message_loop->PostTask(
FROM_HERE,
- base::Bind(&ChromeAsyncSocket::DoWrite, weak_factory_.GetWeakPtr()));
+ base::Bind(&ChromeAsyncSocket::DoWrite,
+ weak_ptr_factory_.GetWeakPtr()));
write_state_ = POSTED;
}
@@ -309,7 +311,7 @@ void ChromeAsyncSocket::DoWrite() {
transport_socket_->Write(
write_buf_.get(), write_end_,
base::Bind(&ChromeAsyncSocket::ProcessWriteDone,
- base::Unretained(this)));
+ weak_ptr_factory_.GetWeakPtr()));
write_state_ = PENDING;
if (status != net::ERR_IO_PENDING) {
ProcessWriteDone(status);
@@ -360,7 +362,7 @@ bool ChromeAsyncSocket::Close() {
// (not STATE_CLOSED) -> STATE_CLOSED
void ChromeAsyncSocket::DoClose() {
- weak_factory_.InvalidateWeakPtrs();
+ weak_ptr_factory_.InvalidateWeakPtrs();
if (transport_socket_.get()) {
transport_socket_->Disconnect();
}
@@ -397,23 +399,25 @@ bool ChromeAsyncSocket::StartTls(const std::string& domain_name) {
DCHECK_EQ(write_end_, 0U);
// Clear out any posted DoRead() tasks.
- weak_factory_.InvalidateWeakPtrs();
+ weak_ptr_factory_.InvalidateWeakPtrs();
DCHECK(transport_socket_.get());
- net::ClientSocketHandle* socket_handle = new net::ClientSocketHandle();
+ scoped_ptr<net::ClientSocketHandle> socket_handle(
+ new net::ClientSocketHandle());
socket_handle->set_socket(transport_socket_.release());
transport_socket_.reset(
- client_socket_factory_->CreateSSLClientSocket(
- socket_handle, net::HostPortPair(domain_name, 443)));
+ resolving_client_socket_factory_->CreateSSLClientSocket(
+ socket_handle.release(), net::HostPortPair(domain_name, 443)));
int status = transport_socket_->Connect(
base::Bind(&ChromeAsyncSocket::ProcessSSLConnectDone,
- base::Unretained(this)));
+ weak_ptr_factory_.GetWeakPtr()));
if (status != net::ERR_IO_PENDING) {
MessageLoop* message_loop = MessageLoop::current();
CHECK(message_loop);
- message_loop->PostTask(FROM_HERE,
- base::Bind(&ChromeAsyncSocket::ProcessSSLConnectDone,
- weak_factory_.GetWeakPtr(), status));
+ message_loop->PostTask(
+ FROM_HERE,
+ base::Bind(&ChromeAsyncSocket::ProcessSSLConnectDone,
+ weak_ptr_factory_.GetWeakPtr(), status));
}
return true;
}
« no previous file with comments | « jingle/notifier/base/chrome_async_socket.h ('k') | jingle/notifier/base/chrome_async_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698