File 0001-add-flag-for-max-connections-per-host.patch of Package chromium120
Index: chromium/chrome/browser/BUILD.gn
===================================================================
--- chromium.orig/chrome/browser/BUILD.gn
+++ chromium/chrome/browser/BUILD.gn
@@ -2301,6 +2301,7 @@ static_library("browser") {
"//components/net_log",
"//components/network_hints/common:mojo_bindings",
"//components/network_session_configurator/browser",
+ "//components/network_session_configurator/common",
"//components/network_time",
"//components/no_state_prefetch/browser",
"//components/no_state_prefetch/common",
Index: chromium/chrome/browser/about_flags.cc
===================================================================
--- chromium.orig/chrome/browser/about_flags.cc
+++ chromium/chrome/browser/about_flags.cc
@@ -394,6 +394,11 @@ const FeatureEntry::Choice kBookmarkBarN
"never"},
};
+const FeatureEntry::Choice kMaxConnectionsPerHostChoices[] = {
+ {features::kMaxConnectionsPerHostChoiceDefault, "", ""},
+ {features::kMaxConnectionsPerHostChoice15, switches::kMaxConnectionsPerHost, "15"},
+};
+
#if defined(USE_AURA)
const FeatureEntry::Choice kPullToRefreshChoices[] = {
{flags_ui::kGenericExperimentChoiceDefault, "", ""},
@@ -4094,6 +4099,11 @@ const FeatureEntry kFeatureEntries[] = {
"Disable the Bookmark Bar on the New-Tab-Page. ungoogled-chromium flag.",
kOsDesktop, MULTI_VALUE_TYPE(kBookmarkBarNewTab)},
+ {"max-connections-per-host",
+ "Maximum connections per host",
+ "Customize maximum allowed connections per host. ungoogled-chromium flag, Bromite feature.",
+ kOsAll, MULTI_VALUE_TYPE(kMaxConnectionsPerHostChoices)},
+
{variations::switches::kEnableBenchmarking,
flag_descriptions::kEnableBenchmarkingName,
flag_descriptions::kEnableBenchmarkingDescription, kOsAll,
Index: chromium/chrome/browser/browser_process_impl.cc
===================================================================
--- chromium.orig/chrome/browser/browser_process_impl.cc
+++ chromium/chrome/browser/browser_process_impl.cc
@@ -20,11 +20,13 @@
#include "base/functional/callback.h"
#include "base/functional/callback_helpers.h"
#include "base/location.h"
+#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
#include "base/notreached.h"
#include "base/path_service.h"
#include "base/run_loop.h"
+#include "base/strings/string_number_conversions.h"
#include "base/synchronization/waitable_event.h"
#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
@@ -104,6 +106,7 @@
#include "components/metrics/metrics_service.h"
#include "components/metrics_services_manager/metrics_services_manager.h"
#include "components/metrics_services_manager/metrics_services_manager_client.h"
+#include "components/network_session_configurator/common/network_switches.h"
#include "components/network_time/network_time_tracker.h"
#include "components/os_crypt/async/browser/os_crypt_async.h"
#include "components/permissions/permissions_client.h"
@@ -135,6 +138,7 @@
#include "media/media_buildflags.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "net/log/net_log.h"
+#include "net/socket/client_socket_pool_manager.h"
#include "ppapi/buildflags/buildflags.h"
#include "printing/buildflags/buildflags.h"
#include "services/network/public/cpp/features.h"
@@ -368,6 +372,18 @@ void BrowserProcessImpl::Init() {
pref_change_registrar_.Add(metrics::prefs::kMetricsReportingEnabled,
base::BindRepeating(&ApplyMetricsReportingPolicy));
+ int max_connections_per_host = 0;
+ auto switch_value = base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
+ switches::kMaxConnectionsPerHost);
+ if (!switch_value.empty() && !base::StringToInt(switch_value, &max_connections_per_host)) {
+ LOG(DFATAL) << "--" << switches::kMaxConnectionsPerHost
+ << " expected integer; got (\"" << switch_value << "\" instead)";
+ }
+ if (max_connections_per_host != 0) {
+ net::ClientSocketPoolManager::set_max_sockets_per_group(
+ net::HttpNetworkSession::NORMAL_SOCKET_POOL, max_connections_per_host);
+ }
+
DCHECK(!webrtc_event_log_manager_);
webrtc_event_log_manager_ = WebRtcEventLogManager::CreateSingletonInstance();
Index: chromium/components/network_session_configurator/common/network_features.cc
===================================================================
--- chromium.orig/components/network_session_configurator/common/network_features.cc
+++ chromium/components/network_session_configurator/common/network_features.cc
@@ -8,4 +8,7 @@
namespace features {
+const char kMaxConnectionsPerHostChoiceDefault[] = "6",
+ kMaxConnectionsPerHostChoice15[] = "15";
+
} // namespace features
Index: chromium/components/network_session_configurator/common/network_features.h
===================================================================
--- chromium.orig/components/network_session_configurator/common/network_features.h
+++ chromium/components/network_session_configurator/common/network_features.h
@@ -10,6 +10,10 @@
namespace features {
+NETWORK_SESSION_CONFIGURATOR_EXPORT extern const char kMaxConnectionsPerHostChoiceDefault[],
+ kMaxConnectionsPerHostChoice6[],
+ kMaxConnectionsPerHostChoice15[];
+
} // namespace features
#endif // COMPONENTS_NETWORK_SESSION_CONFIGURATOR_COMMON_NETWORK_FEATURES_H_
Index: chromium/components/network_session_configurator/common/network_switch_list.h
===================================================================
--- chromium.orig/components/network_session_configurator/common/network_switch_list.h
+++ chromium/components/network_session_configurator/common/network_switch_list.h
@@ -19,6 +19,10 @@ NETWORK_SWITCH(kEnableUserAlternateProto
// Enables the QUIC protocol. This is a temporary testing flag.
NETWORK_SWITCH(kEnableQuic, "enable-quic")
+// Allows specifying a higher number of maximum connections per host
+// (15 instead of 6, mirroring the value Mozilla uses).
+NETWORK_SWITCH(kMaxConnectionsPerHost, "max-connections-per-host")
+
// Ignores certificate-related errors.
NETWORK_SWITCH(kIgnoreCertificateErrors, "ignore-certificate-errors")