| Index: net/tools/flip_server/sm_connection.cc
|
| diff --git a/net/tools/flip_server/sm_connection.cc b/net/tools/flip_server/sm_connection.cc
|
| index 062e44e395924ac1138ecaf7e7699a4171da4e8c..158cd30ff4fbb36ee4e009f5b466fc94a2db7beb 100644
|
| --- a/net/tools/flip_server/sm_connection.cc
|
| +++ b/net/tools/flip_server/sm_connection.cc
|
| @@ -54,17 +54,14 @@ SMConnection::SMConnection(EpollServer* epoll_server,
|
| sm_interface_(NULL),
|
| log_prefix_(log_prefix),
|
| max_bytes_sent_per_dowrite_(4096),
|
| - ssl_(NULL) {
|
| -}
|
| + ssl_(NULL) {}
|
|
|
| SMConnection::~SMConnection() {
|
| if (initialized())
|
| Reset();
|
| }
|
|
|
| -EpollServer* SMConnection::epoll_server() {
|
| - return epoll_server_;
|
| -}
|
| +EpollServer* SMConnection::epoll_server() { return epoll_server_; }
|
|
|
| void SMConnection::ReadyToSend() {
|
| VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| @@ -104,11 +101,8 @@ void SMConnection::InitSMConnection(SMConnectionPoolInterface* connection_pool,
|
| // TODO(kelindsay): is_numeric_host_address value needs to be detected
|
| server_ip_ = server_ip;
|
| server_port_ = server_port;
|
| - int ret = CreateConnectedSocket(&fd_,
|
| - server_ip,
|
| - server_port,
|
| - true,
|
| - acceptor_->disable_nagle_);
|
| + int ret = CreateConnectedSocket(
|
| + &fd_, server_ip, server_port, true, acceptor_->disable_nagle_);
|
|
|
| if (ret < 0) {
|
| LOG(ERROR) << "-1 Could not create connected socket";
|
| @@ -117,12 +111,12 @@ void SMConnection::InitSMConnection(SMConnectionPoolInterface* connection_pool,
|
| DCHECK_NE(-1, fd_);
|
| connection_complete_ = true;
|
| VLOG(1) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| - << "Connection complete to: " << server_ip_ << ":"
|
| - << server_port_ << " ";
|
| + << "Connection complete to: " << server_ip_ << ":" << server_port_
|
| + << " ";
|
| }
|
| VLOG(1) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| - << "Connecting to server: " << server_ip_ << ":"
|
| - << server_port_ << " ";
|
| + << "Connecting to server: " << server_ip_ << ":" << server_port_
|
| + << " ";
|
| } else {
|
| // If fd != -1 then we are initializing a connection that has just been
|
| // accepted from the listen socket.
|
| @@ -132,7 +126,7 @@ void SMConnection::InitSMConnection(SMConnectionPoolInterface* connection_pool,
|
| }
|
| if (fd_ != -1) {
|
| VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| - << "Closing pre-existing fd";
|
| + << "Closing pre-existing fd";
|
| close(fd_);
|
| fd_ = -1;
|
| }
|
| @@ -261,8 +255,8 @@ void SMConnection::Cleanup(const char* cleanup) {
|
| }
|
|
|
| void SMConnection::HandleEvents() {
|
| - VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT << "Received: "
|
| - << EpollServer::EventMaskToString(events_).c_str();
|
| + VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| + << "Received: " << EpollServer::EventMaskToString(events_).c_str();
|
|
|
| if (events_ & EPOLLIN) {
|
| if (!DoRead())
|
| @@ -274,8 +268,8 @@ void SMConnection::HandleEvents() {
|
| if (connection_complete_ == false) {
|
| int sock_error;
|
| socklen_t sock_error_len = sizeof(sock_error);
|
| - int ret = getsockopt(fd_, SOL_SOCKET, SO_ERROR, &sock_error,
|
| - &sock_error_len);
|
| + int ret =
|
| + getsockopt(fd_, SOL_SOCKET, SO_ERROR, &sock_error, &sock_error_len);
|
| if (ret != 0) {
|
| VLOG(1) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| << "getsockopt error: " << errno << ": " << strerror(errno);
|
| @@ -285,7 +279,7 @@ void SMConnection::HandleEvents() {
|
| connection_complete_ = true;
|
| VLOG(1) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| << "Connection complete to " << server_ip_ << ":"
|
| - << server_port_ << " ";
|
| + << server_port_ << " ";
|
| } else if (sock_error == EINPROGRESS) {
|
| return;
|
| } else {
|
| @@ -304,7 +298,7 @@ void SMConnection::HandleEvents() {
|
| }
|
| return;
|
|
|
| - handle_close_or_error:
|
| + handle_close_or_error:
|
| Cleanup("HandleEvents");
|
| }
|
|
|
| @@ -316,25 +310,28 @@ bool SMConnection::WasSpdyNegotiated(SpdyMajorVersion* version_negotiated) {
|
|
|
| // If this is an SSL connection, check if NPN specifies SPDY.
|
| if (ssl_) {
|
| - const unsigned char *npn_proto;
|
| + const unsigned char* npn_proto;
|
| unsigned int npn_proto_len;
|
| SSL_get0_next_proto_negotiated(ssl_, &npn_proto, &npn_proto_len);
|
| if (npn_proto_len > 0) {
|
| - std::string npn_proto_str((const char *)npn_proto, npn_proto_len);
|
| + std::string npn_proto_str((const char*)npn_proto, npn_proto_len);
|
| VLOG(1) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| << "NPN protocol detected: " << npn_proto_str;
|
| if (!strncmp(reinterpret_cast<const char*>(npn_proto),
|
| - "spdy/2", npn_proto_len)) {
|
| + "spdy/2",
|
| + npn_proto_len)) {
|
| *version_negotiated = SPDY2;
|
| return true;
|
| }
|
| if (!strncmp(reinterpret_cast<const char*>(npn_proto),
|
| - "spdy/3", npn_proto_len)) {
|
| + "spdy/3",
|
| + npn_proto_len)) {
|
| *version_negotiated = SPDY3;
|
| return true;
|
| }
|
| if (!strncmp(reinterpret_cast<const char*>(npn_proto),
|
| - "spdy/4a2", npn_proto_len)) {
|
| + "spdy/4a2",
|
| + npn_proto_len)) {
|
| *version_negotiated = SPDY4;
|
| return true;
|
| }
|
| @@ -363,55 +360,43 @@ bool SMConnection::SetupProtocolInterfaces() {
|
| }
|
|
|
| switch (acceptor_->flip_handler_type_) {
|
| - case FLIP_HANDLER_HTTP_SERVER:
|
| - {
|
| - DCHECK(!spdy_negotiated);
|
| - VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| - << (sm_http_interface_ ? "Creating" : "Reusing")
|
| - << " HTTP interface.";
|
| - if (!sm_http_interface_)
|
| - sm_http_interface_ = new HttpSM(this,
|
| - NULL,
|
| - memory_cache_,
|
| - acceptor_);
|
| - sm_interface_ = sm_http_interface_;
|
| - }
|
| + case FLIP_HANDLER_HTTP_SERVER: {
|
| + DCHECK(!spdy_negotiated);
|
| + VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| + << (sm_http_interface_ ? "Creating" : "Reusing")
|
| + << " HTTP interface.";
|
| + if (!sm_http_interface_)
|
| + sm_http_interface_ = new HttpSM(this, NULL, memory_cache_, acceptor_);
|
| + sm_interface_ = sm_http_interface_;
|
| break;
|
| - case FLIP_HANDLER_PROXY:
|
| - {
|
| - VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| - << (sm_streamer_interface_ ? "Creating" : "Reusing")
|
| - << " PROXY Streamer interface.";
|
| - if (!sm_streamer_interface_) {
|
| - sm_streamer_interface_ = new StreamerSM(this,
|
| - NULL,
|
| - epoll_server_,
|
| - acceptor_);
|
| - sm_streamer_interface_->set_is_request();
|
| - }
|
| - sm_interface_ = sm_streamer_interface_;
|
| - // If spdy is not negotiated, the streamer interface will proxy all
|
| - // data to the origin server.
|
| - if (!spdy_negotiated)
|
| - break;
|
| - }
|
| - // Otherwise fall through into the case below.
|
| - case FLIP_HANDLER_SPDY_SERVER:
|
| - {
|
| - DCHECK(spdy_negotiated);
|
| - VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| - << (sm_spdy_interface_ ? "Creating" : "Reusing")
|
| - << " SPDY interface.";
|
| - if (!sm_spdy_interface_)
|
| - sm_spdy_interface_ = new SpdySM(this,
|
| - NULL,
|
| - epoll_server_,
|
| - memory_cache_,
|
| - acceptor_,
|
| - version);
|
| - sm_interface_ = sm_spdy_interface_;
|
| + }
|
| + case FLIP_HANDLER_PROXY: {
|
| + VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| + << (sm_streamer_interface_ ? "Creating" : "Reusing")
|
| + << " PROXY Streamer interface.";
|
| + if (!sm_streamer_interface_) {
|
| + sm_streamer_interface_ =
|
| + new StreamerSM(this, NULL, epoll_server_, acceptor_);
|
| + sm_streamer_interface_->set_is_request();
|
| }
|
| + sm_interface_ = sm_streamer_interface_;
|
| + // If spdy is not negotiated, the streamer interface will proxy all
|
| + // data to the origin server.
|
| + if (!spdy_negotiated)
|
| + break;
|
| + }
|
| + // Otherwise fall through into the case below.
|
| + case FLIP_HANDLER_SPDY_SERVER: {
|
| + DCHECK(spdy_negotiated);
|
| + VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| + << (sm_spdy_interface_ ? "Creating" : "Reusing")
|
| + << " SPDY interface.";
|
| + if (!sm_spdy_interface_)
|
| + sm_spdy_interface_ = new SpdySM(
|
| + this, NULL, epoll_server_, memory_cache_, acceptor_, version);
|
| + sm_interface_ = sm_spdy_interface_;
|
| break;
|
| + }
|
| }
|
|
|
| CorkSocket();
|
| @@ -469,12 +454,12 @@ bool SMConnection::DoRead() {
|
| default:
|
| VLOG(1) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| << "While calling recv, got error: "
|
| - << (ssl_?"(ssl error)":strerror(stored_errno));
|
| + << (ssl_ ? "(ssl error)" : strerror(stored_errno));
|
| goto error_or_close;
|
| }
|
| } else if (bytes_read > 0) {
|
| VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT << "read " << bytes_read
|
| - << " bytes";
|
| + << " bytes";
|
| last_read_time_ = time(NULL);
|
| // If the protocol hasn't been detected yet, set up the handlers
|
| // we'll need.
|
| @@ -498,7 +483,7 @@ bool SMConnection::DoRead() {
|
| VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT << "DoRead done!";
|
| return true;
|
|
|
| - error_or_close:
|
| + error_or_close:
|
| VLOG(1) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| << "DoRead(): error_or_close. "
|
| << "Cleaning up, then returning false";
|
| @@ -536,9 +521,7 @@ bool SMConnection::DoConsumeReadData() {
|
| return true;
|
| }
|
|
|
| -void SMConnection::HandleResponseFullyRead() {
|
| - sm_interface_->Cleanup();
|
| -}
|
| +void SMConnection::HandleResponseFullyRead() { sm_interface_->Cleanup(); }
|
|
|
| bool SMConnection::DoWrite() {
|
| size_t bytes_sent = 0;
|
| @@ -558,8 +541,8 @@ bool SMConnection::DoWrite() {
|
| }
|
| }
|
| while (!output_list_.empty()) {
|
| - VLOG(2) << log_prefix_ << "DoWrite: Items in output list: "
|
| - << output_list_.size();
|
| + VLOG(2) << log_prefix_
|
| + << "DoWrite: Items in output list: " << output_list_.size();
|
| if (bytes_sent >= max_bytes_sent_per_dowrite_) {
|
| VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| << " byte sent >= max bytes sent per write: Setting EPOLLOUT: "
|
| @@ -571,7 +554,7 @@ bool SMConnection::DoWrite() {
|
| sm_interface_->GetOutput();
|
| }
|
| DataFrame* data_frame = output_list_.front();
|
| - const char* bytes = data_frame->data;
|
| + const char* bytes = data_frame->data;
|
| int size = data_frame->size;
|
| bytes += data_frame->index;
|
| size -= data_frame->index;
|
| @@ -606,13 +589,13 @@ bool SMConnection::DoWrite() {
|
| continue;
|
| default:
|
| VLOG(1) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| - << "While calling send, got error: " << stored_errno
|
| - << ": " << (ssl_?"":strerror(stored_errno));
|
| + << "While calling send, got error: " << stored_errno << ": "
|
| + << (ssl_ ? "" : strerror(stored_errno));
|
| goto error_or_close;
|
| }
|
| } else if (bytes_written > 0) {
|
| - VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT << "Wrote: "
|
| - << bytes_written << " bytes";
|
| + VLOG(2) << log_prefix_ << ACCEPTOR_CLIENT_IDENT
|
| + << "Wrote: " << bytes_written << " bytes";
|
| data_frame->index += bytes_written;
|
| bytes_sent += bytes_written;
|
| continue;
|
| @@ -660,8 +643,7 @@ void SMConnection::Reset() {
|
| initialized_ = false;
|
| protocol_detected_ = false;
|
| events_ = 0;
|
| - for (std::list<DataFrame*>::iterator i =
|
| - output_list_.begin();
|
| + for (std::list<DataFrame*>::iterator i = output_list_.begin();
|
| i != output_list_.end();
|
| ++i) {
|
| delete *i;
|
| @@ -671,12 +653,12 @@ void SMConnection::Reset() {
|
|
|
| // static
|
| SMConnection* SMConnection::NewSMConnection(EpollServer* epoll_server,
|
| - SSLState *ssl_state,
|
| + SSLState* ssl_state,
|
| MemoryCache* memory_cache,
|
| - FlipAcceptor *acceptor,
|
| + FlipAcceptor* acceptor,
|
| std::string log_prefix) {
|
| - return new SMConnection(epoll_server, ssl_state, memory_cache,
|
| - acceptor, log_prefix);
|
| + return new SMConnection(
|
| + epoll_server, ssl_state, memory_cache, acceptor, log_prefix);
|
| }
|
|
|
| } // namespace net
|
|
|