mirror of https://github.com/grpc/grpc-dart.git
Fix grpc-web issue when decoding empty repeated. (#187)
This commit is contained in:
parent
1578122a63
commit
8aa5b51760
|
@ -78,12 +78,11 @@ class _GrpcWebConversionSink extends ChunkedConversionSink<ByteBuffer> {
|
|||
final dataLength = _dataHeader.buffer.asByteData().getUint32(0);
|
||||
_dataOffset = 0;
|
||||
_state = _GrpcWebParseState.Message;
|
||||
_data = new Uint8List(dataLength);
|
||||
if (dataLength == 0) {
|
||||
// empty message
|
||||
_finishMessage();
|
||||
}
|
||||
|
||||
_data = new Uint8List(dataLength);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ class GrpcMetadata extends GrpcMessage {
|
|||
class GrpcData extends GrpcMessage {
|
||||
final List<int> data;
|
||||
final bool isCompressed;
|
||||
GrpcData(this.data, {this.isCompressed});
|
||||
GrpcData(this.data, {this.isCompressed}) : assert(data != null);
|
||||
|
||||
@override
|
||||
String toString() => 'gRPC Data (${data.length} bytes)';
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
import 'dart:async';
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:grpc/src/client/transport/web_streams.dart';
|
||||
import 'package:grpc/src/shared/message.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
main() {
|
||||
test("decoding an empty repeated", () async {
|
||||
final GrpcData data = await GrpcWebDecoder()
|
||||
.bind(Stream.fromIterable([
|
||||
Uint8List.fromList([0, 0, 0, 0, 0]).buffer
|
||||
]))
|
||||
.first as GrpcData;
|
||||
expect(data.data, []);
|
||||
});
|
||||
}
|
Loading…
Reference in New Issue