@@ -728,7 +728,8 @@ auto Http2ClientTransport::SerializeAndWrite(std::vector<Http2Frame>&& frames) {
728
728
729
729
auto Http2ClientTransport::MultiplexerLoop () {
730
730
GRPC_HTTP2_CLIENT_DLOG << " Http2ClientTransport MultiplexerLoop Factory" ;
731
- return Loop ([self = RefAsSubclass<Http2ClientTransport>()]() {
731
+ return AssertResultType<
732
+ absl::Status>(Loop ([self = RefAsSubclass<Http2ClientTransport>()]() {
732
733
self->write_bytes_remaining_ = self->GetMaxWriteSize ();
733
734
GRPC_HTTP2_CLIENT_DLOG << " Http2ClientTransport MultiplexerLoop "
734
735
<< " max_write_size_=" << self->GetMaxWriteSize ();
@@ -875,7 +876,7 @@ auto Http2ClientTransport::MultiplexerLoop() {
875
876
}
876
877
return Continue ();
877
878
});
878
- });
879
+ })) ;
879
880
}
880
881
881
882
auto Http2ClientTransport::OnMultiplexerLoopEnded () {
@@ -962,10 +963,11 @@ Http2ClientTransport::Http2ClientTransport(
962
963
general_party_arena->SetContext <EventEngine>(event_engine.get ());
963
964
general_party_ = Party::Make (std::move (general_party_arena));
964
965
965
- general_party_->Spawn (" ReadLoop" , ReadLoop (), OnReadLoopEnded ());
966
- general_party_->Spawn (" MultiplexerLoop" , MultiplexerLoop (),
966
+ general_party_->Spawn (" ReadLoop" , UntilTransportClosed (ReadLoop ()),
967
+ OnReadLoopEnded ());
968
+ general_party_->Spawn (" MultiplexerLoop" ,
969
+ UntilTransportClosed (MultiplexerLoop ()),
967
970
OnMultiplexerLoopEnded ());
968
-
969
971
// The keepalive loop is only spawned if the keepalive time is not infinity.
970
972
keepalive_manager_.Spawn (general_party_.get ());
971
973
@@ -1102,6 +1104,8 @@ void Http2ClientTransport::BeginCloseStream(
1102
1104
1103
1105
void Http2ClientTransport::CloseTransport () {
1104
1106
GRPC_HTTP2_CLIENT_DLOG << " Http2ClientTransport::CloseTransport" ;
1107
+
1108
+ transport_closed_latch_.Set ();
1105
1109
// This is the only place where the general_party_ is
1106
1110
// reset.
1107
1111
general_party_.reset ();
0 commit comments