Skip to content

Commit ae911a3

Browse files
authored
Merge pull request #624 from Clasherzz/client_cancellation
fix:cancellation_issue
2 parents 866f275 + 362cbb9 commit ae911a3

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

packages/apidash_core/lib/services/http_client_manager.dart

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'dart:io';
2-
import 'dart:collection';
32
import 'package:flutter/foundation.dart';
43
import 'package:http/http.dart' as http;
54
import 'package:http/io_client.dart';
@@ -15,7 +14,7 @@ class HttpClientManager {
1514
static final HttpClientManager _instance = HttpClientManager._internal();
1615
static const int _maxCancelledRequests = 100;
1716
final Map<String, http.Client> _clients = {};
18-
final Queue<String> _cancelledRequests = Queue();
17+
final Set<String> _cancelledRequests = {};
1918

2019
factory HttpClientManager() {
2120
return _instance;
@@ -38,9 +37,9 @@ class HttpClientManager {
3837
_clients[requestId]?.close();
3938
_clients.remove(requestId);
4039

41-
_cancelledRequests.addLast(requestId);
42-
while (_cancelledRequests.length > _maxCancelledRequests) {
43-
_cancelledRequests.removeFirst();
40+
_cancelledRequests.add(requestId);
41+
if (_cancelledRequests.length > _maxCancelledRequests) {
42+
_cancelledRequests.remove(_cancelledRequests.first);
4443
}
4544
}
4645
}
@@ -49,6 +48,10 @@ class HttpClientManager {
4948
return _cancelledRequests.contains(requestId);
5049
}
5150

51+
void removeCancelledRequest(String requestId) {
52+
_cancelledRequests.remove(requestId);
53+
}
54+
5255
void closeClient(String requestId) {
5356
if (_clients.containsKey(requestId)) {
5457
_clients[requestId]?.close();

packages/apidash_core/lib/services/http_service.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ Future<(HttpResponse?, Duration?, String?)> sendHttpRequest(
1919
SupportedUriSchemes defaultUriScheme = kDefaultUriScheme,
2020
bool noSSL = false,
2121
}) async {
22+
if(httpClientManager.wasRequestCancelled(requestId)){
23+
httpClientManager.removeCancelledRequest(requestId);
24+
}
2225
final client = httpClientManager.createClient(requestId, noSSL: noSSL);
2326

2427
(Uri?, String?) uriRec = getValidRequestUri(
@@ -71,7 +74,8 @@ Future<(HttpResponse?, Duration?, String?)> sendHttpRequest(
7174
}
7275
}
7376
http.StreamedResponse multiPartResponse =
74-
await multiPartRequest.send();
77+
await client.send(multiPartRequest);
78+
7579
stopwatch.stop();
7680
http.Response convertedMultiPartResponse =
7781
await convertStreamedResponse(multiPartResponse);

0 commit comments

Comments
 (0)