Description
void clientStreaming(size_t amount) { api::ClientStreamingRequest request; api::ClientStreamingResponse response; const auto stream = mClient.streamClientStreaming(request); QObject::connect(stream.get(), &QGrpcOperation::finished, &mClient, [stream]() { handleFinished<api::ClientStreamingResponse>("clientStreaming", stream); }); size_t count = 0; while (count++ < amount) { request.setPing(count); qDebug() << "Client clientStreaming: ping " << request.ping(); stream->sendMessage(request); } // QTimer::singleShot(200, [stream](){ // stream->writesDone(); // }); stream->writesDone(); }
results in:
qt.grpc: Attempt sending headers to the ended stream qt.grpc: "ClientStreaming" call "api.TestService" stream error: "Unable to create an HTTP/2 stream"
We need to improve the implementation in QGrpcHttp2ChannelPrivate to handle this issue. This only happens if writesDone get's send before the channel is available in the http2 implementation