From 24155ef6f0383a171eab28af05ecfeab7cededdf Mon Sep 17 00:00:00 2001 From: asiva Date: Fri, 13 Oct 2023 22:59:28 +0000 Subject: [PATCH] [IO/http] - Fix for https://github.com/dart-lang/sdk/issues/49930 Check for null 'bufferedData' even in the path when 'subscription' is null. Should also fix https://github.com/dart-lang/sdk/issues/26379 TEST=ci Change-Id: Iacc18c8a38e2c5b36c5234495d39cf20bfd8bac3 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/330201 Reviewed-by: Brian Quinlan Commit-Queue: Siva Annamalai --- sdk/lib/_http/http_parser.dart | 6 +++--- tests/standalone/io/http_parser_header_add_test.dart | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/sdk/lib/_http/http_parser.dart b/sdk/lib/_http/http_parser.dart index b82bac397d2..76df103aae1 100644 --- a/sdk/lib/_http/http_parser.dart +++ b/sdk/lib/_http/http_parser.dart @@ -195,9 +195,9 @@ class _HttpDetachedIncoming extends Stream { return _HttpDetachedStreamSubscription(subscription, bufferedData, onData) ..resume(); } else { - // TODO(26379): add test for this branch. - return Stream.fromIterable([bufferedData!]).listen(onData, - onError: onError, onDone: onDone, cancelOnError: cancelOnError); + return Stream.fromIterable([bufferedData ?? Uint8List(0)]) + .listen(onData, + onError: onError, onDone: onDone, cancelOnError: cancelOnError); } } } diff --git a/tests/standalone/io/http_parser_header_add_test.dart b/tests/standalone/io/http_parser_header_add_test.dart index 4fdf602886d..9645ff025e4 100644 --- a/tests/standalone/io/http_parser_header_add_test.dart +++ b/tests/standalone/io/http_parser_header_add_test.dart @@ -7,9 +7,13 @@ import "dart:async"; import "dart:io"; +// ignore: IMPORT_INTERNAL_LIBRARY +import "dart:_http" show TestingClass$_HttpHeaders, TestingClass$_HttpParser; import "package:async_helper/async_helper.dart"; import "package:expect/expect.dart"; +typedef _HttpParser = TestingClass$_HttpParser; + Future testFormatException() async { final server = await HttpServer.bind("127.0.0.1", 0); server.listen((HttpRequest request) { @@ -28,6 +32,12 @@ Future testFormatException() async { } } +void testNullSubscriptionData() { + _HttpParser httpParser = new _HttpParser.requestParser(); + httpParser.detachIncoming().listen((data) {}, onDone: () {}); +} + main() { asyncTest(testFormatException); + testNullSubscriptionData(); }