Skip to content

Commit 5d5d209

Browse files
author
Anna Gringauze
committed
Limit number of simultaneous connections to prevent SocketExceptions
1 parent 8714df3 commit 5d5d209

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

dwds/lib/src/readers/proxy_server_asset_reader.dart

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,13 @@ class ProxyServerAssetReader implements AssetReader {
2929
root ??= '';
3030
isHttps ??= false;
3131
var scheme = isHttps ? 'https://' : 'http://';
32+
var inner = HttpClient()
33+
..maxConnectionsPerHost = 200
34+
..idleTimeout = const Duration(seconds: 30)
35+
..connectionTimeout = const Duration(seconds: 30);
3236
_client = isHttps
33-
? IOClient(
34-
HttpClient()..badCertificateCallback = (cert, host, port) => true)
35-
: http.Client();
37+
? IOClient(inner..badCertificateCallback = (cert, host, port) => true)
38+
: IOClient(inner);
3639
var url = '$scheme$host:$assetServerPort/';
3740
if (root?.isNotEmpty ?? false) url += '$root/';
3841
_handler = proxyHandler(url, client: _client);

dwds/test/fixtures/context.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import 'package:dwds/src/utilities/dart_uri.dart';
1818
import 'package:dwds/src/utilities/shared.dart';
1919
import 'package:frontend_server_common/src/resident_runner.dart';
2020
import 'package:http/http.dart';
21+
import 'package:http/io_client.dart';
2122
import 'package:logging/logging.dart' as logging;
2223
import 'package:path/path.dart' as p;
2324
import 'package:shelf/shelf.dart';
@@ -133,7 +134,10 @@ class TestContext {
133134
try {
134135
configureLogWriter();
135136

136-
client = Client();
137+
client = IOClient(HttpClient()
138+
..maxConnectionsPerHost = 200
139+
..idleTimeout = const Duration(seconds: 30)
140+
..connectionTimeout = const Duration(seconds: 30));
137141

138142
var systemTempDir = Directory.systemTemp;
139143
_outputDir = systemTempDir.createTempSync('foo bar');

webdev/lib/src/serve/webdev_server.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import 'package:build_daemon/data/build_status.dart' as daemon;
1111
import 'package:devtools_server/devtools_server.dart';
1212
import 'package:dwds/data/build_result.dart';
1313
import 'package:dwds/dwds.dart';
14-
import 'package:http/http.dart';
1514
import 'package:http/http.dart' as http;
15+
import 'package:http/io_client.dart';
1616
import 'package:http_multi_server/http_multi_server.dart';
1717
import 'package:shelf/shelf.dart';
1818
import 'package:shelf/shelf_io.dart' as shelf_io;
@@ -104,7 +104,10 @@ class WebDevServer {
104104
});
105105

106106
var cascade = Cascade();
107-
var client = Client();
107+
var client = IOClient(HttpClient()
108+
..maxConnectionsPerHost = 200
109+
..idleTimeout = const Duration(seconds: 30)
110+
..connectionTimeout = const Duration(seconds: 30));
108111
var assetHandler = proxyHandler(
109112
'http://localhost:${options.daemonPort}/${options.target}/',
110113
client: client);

0 commit comments

Comments
 (0)