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

Unified Diff: content/browser/renderer_host/pepper/pepper_tcp_socket.cc

Issue 12220050: Provide a way to disable Nagle's algorithm on Pepper TCP sockets. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 7 years, 10 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
Index: content/browser/renderer_host/pepper/pepper_tcp_socket.cc
diff --git a/content/browser/renderer_host/pepper/pepper_tcp_socket.cc b/content/browser/renderer_host/pepper/pepper_tcp_socket.cc
index aeb0425e652f29825a23c721bf164c87320965ca..baa60e3081188f463be235c8ea7601beea5650aa 100644
--- a/content/browser/renderer_host/pepper/pepper_tcp_socket.cc
+++ b/content/browser/renderer_host/pepper/pepper_tcp_socket.cc
@@ -196,11 +196,33 @@ void PepperTCPSocket::Write(const std::string& data) {
DoWrite();
}
+void PepperTCPSocket::SetBoolOption(uint32_t name, bool value) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ DCHECK(socket_.get());
+
+ switch (name) {
+ case PP_TCPSOCKETOPTION_NO_DELAY:
+ if (!IsSsl()) {
+ net::TCPClientSocket* tcp_socket =
+ static_cast<net::TCPClientSocket*>(socket_.get());
+ SendSetBoolOptionACK(tcp_socket->SetNoDelay(value));
+ } else {
+ SendSetBoolOptionACK(false);
+ }
+ return;
+ default:
+ break;
+ }
+
+ NOTREACHED();
+ SendSetBoolOptionACK(false);
+}
+
void PepperTCPSocket::StartConnect(const net::AddressList& addresses) {
DCHECK(connection_state_ == CONNECT_IN_PROGRESS);
- socket_.reset(
- new net::TCPClientSocket(addresses, NULL, net::NetLog::Source()));
+ socket_.reset(new net::TCPClientSocket(addresses, NULL,
+ net::NetLog::Source()));
int result = socket_->Connect(
base::Bind(&PepperTCPSocket::OnConnectCompleted,
base::Unretained(this)));
@@ -303,6 +325,11 @@ void PepperTCPSocket::SendSSLHandshakeACK(bool succeeded) {
certificate_fields));
}
+void PepperTCPSocket::SendSetBoolOptionACK(bool succeeded) {
+ manager_->Send(new PpapiMsg_PPBTCPSocket_SetBoolOptionACK(
+ routing_id_, plugin_dispatcher_id_, socket_id_, succeeded));
+}
+
void PepperTCPSocket::OnResolveCompleted(int result) {
DCHECK(connection_state_ == CONNECT_IN_PROGRESS);
@@ -405,6 +432,12 @@ bool PepperTCPSocket::IsConnected() const {
return connection_state_ == CONNECTED || connection_state_ == SSL_CONNECTED;
}
+bool PepperTCPSocket::IsSsl() const {
+ return connection_state_ == SSL_HANDSHAKE_IN_PROGRESS ||
+ connection_state_ == SSL_CONNECTED ||
+ connection_state_ == SSL_HANDSHAKE_FAILED;
+}
+
void PepperTCPSocket::DoWrite() {
DCHECK(write_buffer_base_.get());
DCHECK(write_buffer_.get());
« no previous file with comments | « content/browser/renderer_host/pepper/pepper_tcp_socket.h ('k') | content/renderer/pepper/pepper_plugin_delegate_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698