mirror of https://github.com/grpc/grpc-java.git
OkHttp: Fix race condition between sendCancel and sendFrame
This commit is contained in:
parent
080190c753
commit
a3f2f6249e
|
|
@ -190,11 +190,14 @@ class OkHttpClientStream extends Http2ClientStream {
|
|||
}
|
||||
|
||||
synchronized (lock) {
|
||||
if (cancelSent) {
|
||||
return;
|
||||
}
|
||||
if (pendingData != null) {
|
||||
// Stream is pending start, queue the data.
|
||||
pendingData.add(new PendingData(buffer, endOfStream, flush));
|
||||
} else {
|
||||
checkState(id() != 0, "streamId should be set");
|
||||
checkState(id() != null, "streamId should be set");
|
||||
// If buffer > frameWriter.maxDataLength() the flow-controller will ensure that it is
|
||||
// properly chunked.
|
||||
outboundFlow.data(endOfStream, id(), buffer, flush);
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ public class OkHttpClientTransportTest {
|
|||
startTransport(3, null, true, 1);
|
||||
|
||||
MockStreamListener listener = new MockStreamListener();
|
||||
clientTransport.newStream(method, new Metadata.Headers(), listener).request(1);
|
||||
clientTransport.newStream(method, new Metadata(), listener).request(1);
|
||||
assertContainStream(3);
|
||||
frameHandler().headers(false, false, 3, 0, grpcResponseHeaders(), HeadersMode.HTTP_20_HEADERS);
|
||||
assertNotNull(listener.headers);
|
||||
|
|
|
|||
Loading…
Reference in New Issue