Chromium Code Reviews| Index: net/socket/ssl_client_socket_impl.cc |
| diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc |
| index 80ff994982f2d3e804266d8623bae1dd2e90b0d4..c775c3edd5568258e30e61b04eb84a7e9521a1fa 100644 |
| --- a/net/socket/ssl_client_socket_impl.cc |
| +++ b/net/socket/ssl_client_socket_impl.cc |
| @@ -20,6 +20,7 @@ |
| #include "base/lazy_instance.h" |
| #include "base/macros.h" |
| #include "base/memory/singleton.h" |
| +#include "base/metrics/field_trial.h" |
| #include "base/metrics/histogram_macros.h" |
| #include "base/metrics/sparse_histogram.h" |
| #include "base/profiler/scoped_tracker.h" |
| @@ -85,7 +86,7 @@ const int kNoPendingResult = 1; |
| const char kDefaultSupportedNPNProtocol[] = "http/1.1"; |
| // Default size of the internal BoringSSL buffers. |
| -const int KDefaultOpenSSLBufferSize = 17 * 1024; |
| +const int kDefaultOpenSSLBufferSize = 17 * 1024; |
| // TLS extension number use for Token Binding. |
| const unsigned int kTbExtNum = 24; |
| @@ -929,10 +930,29 @@ int SSLClientSocketImpl::Init() { |
| if (session) |
| SSL_set_session(ssl_, session.get()); |
| + // Get read and write buffer sizes from field trials, if possible. If values |
| + // not present, use default. Also make sure values are in reasonable range. |
| + int send_buffer_size; |
| + if (!base::StringToInt( |
| + base::FieldTrialList::FindFullName("SSLBufferSizeSend"), |
| + &send_buffer_size)) { |
|
jwd
2016/06/28 15:35:12
I'd prefer you use variation params instead of the
mmenke
2016/06/28 18:47:21
Unfortunately, net/ can depend on components/.
mmenke
2016/06/28 18:47:59
can't, rather
jwd
2016/06/28 19:05:16
Ah, ok, so in that case, I'm fine how it is. Strin
mmenke
2016/06/28 19:18:23
Unfortunately, this deep in the network stack, we
jwd
2016/06/28 19:23:22
Ah, none of my suggestions work! Oh well...
|
| + send_buffer_size = kDefaultOpenSSLBufferSize; |
| + } |
| + send_buffer_size = std::max(send_buffer_size, 1000); |
| + send_buffer_size = std::min(send_buffer_size, 2 * kDefaultOpenSSLBufferSize); |
| send_buffer_ = new GrowableIOBuffer(); |
| - send_buffer_->SetCapacity(KDefaultOpenSSLBufferSize); |
| + send_buffer_->SetCapacity(send_buffer_size); |
| + |
| + int recv_buffer_size; |
| + if (!base::StringToInt( |
| + base::FieldTrialList::FindFullName("SSLBufferSizeRecv"), |
| + &recv_buffer_size)) { |
| + recv_buffer_size = kDefaultOpenSSLBufferSize; |
| + } |
| + recv_buffer_size = std::max(recv_buffer_size, 1000); |
| + recv_buffer_size = std::min(recv_buffer_size, 2 * kDefaultOpenSSLBufferSize); |
| recv_buffer_ = new GrowableIOBuffer(); |
| - recv_buffer_->SetCapacity(KDefaultOpenSSLBufferSize); |
| + recv_buffer_->SetCapacity(recv_buffer_size); |
| BIO* ssl_bio = NULL; |