Refactor OHTTP client error checking This CL is a functional no-op. It refactors code modified in cl/843891434 to: * simplify status checks * switch naming to match spec * use `using` to simplify function type definitions PiperOrigin-RevId: 844898207
diff --git a/quiche/quic/masque/masque_ohttp_client.cc b/quiche/quic/masque/masque_ohttp_client.cc index 20e46d2..003ef84 100644 --- a/quiche/quic/masque/masque_ohttp_client.cc +++ b/quiche/quic/masque/masque_ohttp_client.cc
@@ -9,6 +9,7 @@ #include <string> #include <utility> +#include "absl/cleanup/cleanup.h" #include "absl/status/status.h" #include "absl/status/statusor.h" #include "absl/strings/match.h" @@ -289,20 +290,17 @@ return absl::InternalError( "Received unexpected response for unknown request"); } - absl::Status status = response.status(); - if (status.ok()) { - status = CheckStatusAndContentType(*response, "message/ohttp-res"); - if (status.ok()) { - status = HandleOhttpResponse(request_id, response); - if (status.ok()) { - absl::StatusOr<BinaryHttpResponse> binary_response = - TryExtractBinaryResponse(request_id, it->second, *response); - status = HandleBinaryResponse(binary_response); - } - } - } - pending_ohttp_requests_.erase(it); - return status; + auto cleanup = + absl::MakeCleanup([this, it]() { pending_ohttp_requests_.erase(it); }); + QUICHE_RETURN_IF_ERROR(response.status()); + QUICHE_RETURN_IF_ERROR( + CheckStatusAndContentType(*response, "message/ohttp-res")); + QUICHE_RETURN_IF_ERROR(CheckGatewayResponse(*response)); + absl::StatusOr<BinaryHttpResponse> binary_response = + TryExtractBinaryResponse(request_id, it->second, *response); + QUICHE_RETURN_IF_ERROR(binary_response.status()); + QUICHE_RETURN_IF_ERROR(CheckEncapsulatedResponse(*binary_response)); + return absl::OkStatus(); } void MasqueOhttpClient::OnPoolResponse(MasqueConnectionPool* /*pool*/,
diff --git a/quiche/quic/masque/masque_ohttp_client.h b/quiche/quic/masque/masque_ohttp_client.h index b8c5736..9d0d4c3 100644 --- a/quiche/quic/masque/masque_ohttp_client.h +++ b/quiche/quic/masque/masque_ohttp_client.h
@@ -76,13 +76,12 @@ absl::StatusOr<quiche::BinaryHttpResponse> TryExtractBinaryResponse( RequestId request_id, quiche::ObliviousHttpRequest::Context& context, const Message& response); - virtual absl::Status HandleOhttpResponse( - RequestId request_id, const absl::StatusOr<Message>& response) { - return response.status(); + virtual absl::Status CheckGatewayResponse(const Message& response) { + return absl::OkStatus(); } - virtual absl::Status HandleBinaryResponse( - const absl::StatusOr<quiche::BinaryHttpResponse>& binary_response) { - return binary_response.status(); + virtual absl::Status CheckEncapsulatedResponse( + const quiche::BinaryHttpResponse& response) { + return absl::OkStatus(); } private: