Index: chrome/browser/extensions/api/cast_channel/cast_socket.cc |
=================================================================== |
--- chrome/browser/extensions/api/cast_channel/cast_socket.cc (revision 250590) |
+++ chrome/browser/extensions/api/cast_channel/cast_socket.cc (working copy) |
@@ -29,6 +29,9 @@ |
#include "net/ssl/ssl_config_service.h" |
#include "net/ssl/ssl_info.h" |
+// Assumes member name url_. Anyway compile error will occur if that changes. |
Wez
2014/02/13 21:46:08
nit: "Anyway ... changes." is not a sentence.
Sug
Munjal (Google)
2014/02/13 22:23:39
Done.
|
+#define VLOG_WITH_URL(level) VLOG(level) << "[" + url_.spec() + "] " |
+ |
namespace { |
// Allowed schemes for Cast device URLs. |
@@ -74,6 +77,7 @@ |
delegate_(delegate), |
auth_required_(false), |
current_message_size_(0), |
+ current_message_(new CastMessage()), |
net_log_(net_log), |
connect_state_(CONN_STATE_NONE), |
write_state_(WRITE_STATE_NONE), |
@@ -145,8 +149,7 @@ |
bool result = net::X509Certificate::GetDEREncoded( |
ssl_info.cert->os_cert_handle(), cert); |
if (result) |
- VLOG(1) << "[URL: " << url_.spec() |
- << "] Successfully extracted peer certificate: " << *cert; |
+ VLOG_WITH_URL(1) << "Successfully extracted peer certificate: " << *cert; |
return result; |
} |
@@ -156,7 +159,7 @@ |
void CastSocket::Connect(const net::CompletionCallback& callback) { |
DCHECK(CalledOnValidThread()); |
- VLOG(1) << "Connect readyState = " << ready_state_; |
+ VLOG_WITH_URL(1) << "Connect readyState = " << ready_state_; |
if (ready_state_ != READY_STATE_NONE) { |
callback.Run(net::ERR_CONNECTION_FAILED); |
return; |
@@ -232,7 +235,7 @@ |
} |
int CastSocket::DoTcpConnect() { |
- VLOG(1) << "DoTcpConnect"; |
+ VLOG_WITH_URL(1) << "DoTcpConnect"; |
connect_state_ = CONN_STATE_TCP_CONNECT_COMPLETE; |
tcp_socket_ = CreateTcpSocket(); |
return tcp_socket_->Connect( |
@@ -240,7 +243,7 @@ |
} |
int CastSocket::DoTcpConnectComplete(int result) { |
- VLOG(1) << "DoTcpConnectComplete: " << result; |
+ VLOG_WITH_URL(1) << "DoTcpConnectComplete: " << result; |
if (result == net::OK) { |
// Enable TCP protocol-level keep-alive. |
bool result = tcp_socket_->SetKeepAlive(true, kTcpKeepAliveDelaySecs); |
@@ -251,7 +254,7 @@ |
} |
int CastSocket::DoSslConnect() { |
- VLOG(1) << "DoSslConnect"; |
+ VLOG_WITH_URL(1) << "DoSslConnect"; |
connect_state_ = CONN_STATE_SSL_CONNECT_COMPLETE; |
socket_ = CreateSslSocket(tcp_socket_.PassAs<net::StreamSocket>()); |
return socket_->Connect( |
@@ -259,7 +262,7 @@ |
} |
int CastSocket::DoSslConnectComplete(int result) { |
- VLOG(1) << "DoSslConnectComplete: " << result; |
+ VLOG_WITH_URL(1) << "DoSslConnectComplete: " << result; |
if (result == net::ERR_CERT_AUTHORITY_INVALID && |
peer_cert_.empty() && |
ExtractPeerCert(&peer_cert_)) { |
@@ -271,11 +274,12 @@ |
} |
int CastSocket::DoAuthChallengeSend() { |
- VLOG(1) << "DoAuthChallengeSend"; |
+ VLOG_WITH_URL(1) << "DoAuthChallengeSend"; |
connect_state_ = CONN_STATE_AUTH_CHALLENGE_SEND_COMPLETE; |
CastMessage challenge_message; |
CreateAuthChallengeMessage(&challenge_message); |
- VLOG(1) << "Sending challenge: " << CastMessageToString(challenge_message); |
+ VLOG_WITH_URL(1) << "Sending challenge: " |
+ << CastMessageToString(challenge_message); |
// Post a task to send auth challenge so that DoWriteLoop is not nested inside |
// DoConnectLoop. This is not strictly necessary but keeps the write loop |
// code decoupled from connect loop code. |
@@ -289,7 +293,7 @@ |
} |
int CastSocket::DoAuthChallengeSendComplete(int result) { |
- VLOG(1) << "DoAuthChallengeSendComplete: " << result; |
+ VLOG_WITH_URL(1) << "DoAuthChallengeSendComplete: " << result; |
if (result < 0) |
return result; |
connect_state_ = CONN_STATE_AUTH_CHALLENGE_REPLY_COMPLETE; |
@@ -302,12 +306,12 @@ |
} |
int CastSocket::DoAuthChallengeReplyComplete(int result) { |
- VLOG(1) << "DoAuthChallengeReplyComplete: " << result; |
+ VLOG_WITH_URL(1) << "DoAuthChallengeReplyComplete: " << result; |
if (result < 0) |
return result; |
if (!VerifyChallengeReply()) |
return net::ERR_FAILED; |
- VLOG(1) << "Auth challenge verification succeeded"; |
+ VLOG_WITH_URL(1) << "Auth challenge verification succeeded"; |
return net::OK; |
} |
@@ -322,7 +326,7 @@ |
void CastSocket::Close(const net::CompletionCallback& callback) { |
DCHECK(CalledOnValidThread()); |
- VLOG(1) << "Close ReadyState = " << ready_state_; |
+ VLOG_WITH_URL(1) << "Close ReadyState = " << ready_state_; |
tcp_socket_.reset(); |
socket_.reset(); |
cert_verifier_.reset(); |
@@ -366,7 +370,7 @@ |
void CastSocket::DoWriteLoop(int result) { |
DCHECK(CalledOnValidThread()); |
- VLOG(1) << "WriteData q = " << write_queue_.size(); |
+ VLOG_WITH_URL(1) << "DoWriteLoop queue size: " << write_queue_.size(); |
if (write_queue_.empty()) { |
write_state_ = WRITE_STATE_NONE; |
@@ -416,8 +420,8 @@ |
DCHECK(!write_queue_.empty()); |
WriteRequest& request = write_queue_.front(); |
- VLOG(1) << "WriteData byte_count = " << request.io_buffer->size() |
- << " bytes_written " << request.io_buffer->BytesConsumed(); |
+ VLOG_WITH_URL(2) << "WriteData byte_count = " << request.io_buffer->size() |
+ << " bytes_written " << request.io_buffer->BytesConsumed(); |
write_state_ = WRITE_STATE_WRITE_COMPLETE; |
@@ -564,10 +568,11 @@ |
} |
int CastSocket::DoReadComplete(int result) { |
- VLOG(1) << "DoReadDataComplete result = " << result |
- << " header offset = " << header_read_buffer_->offset() |
- << " body offset = " << body_read_buffer_->offset(); |
+ VLOG_WITH_URL(2) << "DoReadComplete result = " << result |
+ << " header offset = " << header_read_buffer_->offset() |
+ << " body offset = " << body_read_buffer_->offset(); |
if (result <= 0) { // 0 means EOF: the peer closed the socket |
+ VLOG_WITH_URL(1) << "Read error, peer closed the socket"; |
error_state_ = CHANNEL_ERROR_SOCKET_ERROR; |
read_state_ = READ_STATE_ERROR; |
return result == 0 ? net::ERR_FAILED : result; |
@@ -603,22 +608,23 @@ |
int CastSocket::DoReadCallback() { |
read_state_ = READ_STATE_READ; |
- if (IsAuthMessage(current_message_)) { |
+ const CastMessage& message = *(current_message_.get()); |
+ if (IsAuthMessage(message)) { |
// An auth message is received, check that connect flow is running. |
if (ready_state_ == READY_STATE_CONNECTING) { |
- challenge_reply_.reset(new CastMessage(current_message_)); |
+ challenge_reply_.reset(new CastMessage(message)); |
PostTaskToStartConnectLoop(net::OK); |
} else { |
read_state_ = READ_STATE_ERROR; |
} |
} else if (delegate_) { |
- MessageInfo message; |
- if (CastMessageToMessageInfo(current_message_, &message)) |
- delegate_->OnMessage(this, message); |
+ MessageInfo message_info; |
+ if (CastMessageToMessageInfo(message, &message_info)) |
+ delegate_->OnMessage(this, message_info); |
else |
read_state_ = READ_STATE_ERROR; |
} |
- current_message_.Clear(); |
+ current_message_->Clear(); |
return net::OK; |
} |
@@ -641,7 +647,8 @@ |
if (header.message_size > kMaxMessageSize) |
return false; |
- VLOG(1) << "Parsed header { message_size: " << header.message_size << " }"; |
+ VLOG_WITH_URL(2) << "Parsed header { message_size: " |
+ << header.message_size << " }"; |
current_message_size_ = header.message_size; |
return true; |
} |
@@ -649,7 +656,7 @@ |
bool CastSocket::ProcessBody() { |
DCHECK_EQ(static_cast<uint32>(body_read_buffer_->offset()), |
current_message_size_); |
- if (!current_message_.ParseFromArray( |
+ if (!current_message_->ParseFromArray( |
body_read_buffer_->StartOfBuffer(), current_message_size_)) { |
return false; |
} |
@@ -686,7 +693,7 @@ |
} |
bool CastSocket::ParseChannelUrl(const GURL& url) { |
- VLOG(1) << "url = " + url.spec(); |
+ VLOG_WITH_URL(2) << "ParseChannelUrl"; |
if (url.SchemeIs(kCastInsecureScheme)) { |
auth_required_ = false; |
} else if (url.SchemeIs(kCastSecureScheme)) { |
@@ -696,8 +703,8 @@ |
} |
// TODO(mfoltz): Manual parsing, yech. Register cast[s] as standard schemes? |
// TODO(mfoltz): Test for IPv6 addresses. Brackets or no brackets? |
- // TODO(mfoltz): Maybe enforce restriction to IPv4 private and IPv6 link-local |
- // networks |
+ // TODO(mfoltz): Maybe enforce restriction to IPv4 private and IPv6 |
+ // link-local networks |
const std::string& path = url.path(); |
// Shortest possible: //A:B |
if (path.size() < 5) { |
@@ -712,7 +719,7 @@ |
} |
const std::string& ip_address_str = path.substr(2, colon - 2); |
const std::string& port_str = path.substr(colon + 1); |
- VLOG(1) << "addr " << ip_address_str << " port " << port_str; |
+ VLOG_WITH_URL(2) << "IP: " << ip_address_str << " Port: " << port_str; |
int port; |
if (!base::StringToInt(port_str, &port)) |
return false; |
@@ -779,3 +786,5 @@ |
} // namespace cast_channel |
} // namespace api |
} // namespace extensions |
+ |
+#undef VLOG_WITH_URL |