Skip to content

Commit

Permalink
Fix connectTimeout update gets ignored during runs (#7)
Browse files Browse the repository at this point in the history
Co-authored-by: Sahar Vanunu <saharvx9@gmail.com>
  • Loading branch information
AlexV525 and saharvx9 authored Oct 20, 2022
1 parent 2c70f22 commit c36831b
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 5 deletions.
9 changes: 4 additions & 5 deletions dio/lib/src/adapters/io_adapter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@ class DefaultHttpClientAdapter implements HttpClientAdapter {

late HttpClientRequest request;
try {
request = await reqFuture;
if (options.connectTimeout > 0) {
request = await reqFuture
.timeout(Duration(milliseconds: options.connectTimeout));
request = await reqFuture.timeout(
Duration(milliseconds: options.connectTimeout),
);
} else {
request = await reqFuture;
}
Expand Down Expand Up @@ -173,9 +173,8 @@ class DefaultHttpClientAdapter implements HttpClientAdapter {
_defaultHttpClient =
onHttpClientCreate!(_defaultHttpClient!) ?? _defaultHttpClient;
}
_defaultHttpClient!.connectionTimeout = _connectionTimeout;
}
return _defaultHttpClient!;
return _defaultHttpClient!..connectionTimeout = _connectionTimeout;
}

@override
Expand Down
30 changes: 30 additions & 0 deletions dio/test/readtimeout_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import 'dart:async';
import 'dart:io';

import 'package:dio/adapter.dart';
import 'package:dio/dio.dart';
import 'package:test/test.dart';

Expand Down Expand Up @@ -97,4 +98,33 @@ void main() {

expect(error, isNull);
});

test('#read_timeout - change connectTimeout in run time ', () async {
var dio = Dio();
final adapter = DefaultHttpClientAdapter();
final http = HttpClient();

adapter.onHttpClientCreate = (_) => http;
dio.httpClientAdapter = adapter;

dio.options
..baseUrl = serverUrl.toString()
..connectTimeout = 200;

try {
await dio.get('/');
} on DioError catch (e) {
//ignore
}

expect(http.connectionTimeout?.inMilliseconds == 200, isTrue);

try {
dio.options.connectTimeout = 1000;
await dio.get('/');
} on DioError catch (e) {
//ignore
}
expect(http.connectionTimeout?.inMilliseconds == 1000, isTrue);
});
}

0 comments on commit c36831b

Please sign in to comment.