@@ -344,21 +344,14 @@ absl::Status MasqueOhttpClient::SendOhttpRequest(
344344 return absl::InternalError (
345345 " Cannot send OHTTP request without OHTTP client" );
346346 }
347- if (pending_request.per_request_config .use_chunked_ohttp ()) {
348- pending_request.chunk_handler = std::make_unique<ChunkHandler>();
349- absl::StatusOr<ChunkedObliviousHttpClient> chunked_client =
350- ChunkedObliviousHttpClient::Create (ohttp_client_->GetPublicKey (),
351- ohttp_client_->GetKeyConfig (),
352- pending_request.chunk_handler .get ());
353- if (!chunked_client.ok ()) {
354- return absl::InternalError (
355- absl::StrCat (" Failed to create chunked OHTTP client: " ,
356- chunked_client.status ().message ()));
357- }
358-
347+ std::string encoded_data;
348+ const bool use_indeterminate_length =
349+ per_request_config.use_indeterminate_length ().value_or (
350+ per_request_config.use_chunked_ohttp ());
351+ if (use_indeterminate_length) {
359352 BinaryHttpRequest::IndeterminateLengthEncoder encoder;
360353
361- QUICHE_ASSIGN_OR_RETURN (std::string encoded_data,
354+ QUICHE_ASSIGN_OR_RETURN (encoded_data,
362355 encoder.EncodeControlData (control_data));
363356 std::vector<quiche::BinaryHttpMessage::FieldView> headers;
364357 if (!formatted_token.empty ()) {
@@ -393,40 +386,39 @@ absl::Status MasqueOhttpClient::SendOhttpRequest(
393386 QUICHE_ASSIGN_OR_RETURN (std::string encoded_trailers,
394387 encoder.EncodeTrailers (absl::MakeSpan (trailers)));
395388 encoded_data += encoded_trailers;
396-
389+ } else {
390+ BinaryHttpRequest binary_request (control_data);
391+ binary_request.set_body (post_data);
392+ if (!formatted_token.empty ()) {
393+ binary_request.AddHeaderField ({" authorization" , formatted_token});
394+ }
395+ QUICHE_ASSIGN_OR_RETURN (encoded_data, binary_request.Serialize ());
396+ }
397+ if (pending_request.per_request_config .use_chunked_ohttp ()) {
398+ pending_request.chunk_handler = std::make_unique<ChunkHandler>();
399+ QUICHE_ASSIGN_OR_RETURN (
400+ ChunkedObliviousHttpClient chunked_client,
401+ ChunkedObliviousHttpClient::Create (
402+ ohttp_client_->GetPublicKey (), ohttp_client_->GetKeyConfig (),
403+ pending_request.chunk_handler .get ()));
397404 // Intentionally split the data into two chunks to test encryption chunking.
398405 QUICHE_ASSIGN_OR_RETURN (encrypted_data,
399- chunked_client-> EncryptRequestChunk (
406+ chunked_client. EncryptRequestChunk (
400407 absl::string_view (encoded_data).substr (0 , 1 ),
401408 /* is_final_chunk=*/ false ));
402409 QUICHE_ASSIGN_OR_RETURN (std::string encrypted_data2,
403- chunked_client-> EncryptRequestChunk (
410+ chunked_client. EncryptRequestChunk (
404411 absl::string_view (encoded_data).substr (1 ),
405412 /* is_final_chunk=*/ true ));
406413 encrypted_data += encrypted_data2;
407414
408- pending_request.chunk_handler ->SetChunkedClient (std::move (* chunked_client));
415+ pending_request.chunk_handler ->SetChunkedClient (std::move (chunked_client));
409416 } else {
410- BinaryHttpRequest binary_request (control_data);
411- binary_request.set_body (post_data);
412- if (!formatted_token.empty ()) {
413- binary_request.AddHeaderField ({" authorization" , formatted_token});
414- }
415- absl::StatusOr<std::string> encoded_request = binary_request.Serialize ();
416- if (!encoded_request.ok ()) {
417- return absl::InternalError (
418- absl::StrCat (" Failed to serialize OHTTP request: " ,
419- encoded_request.status ().message ()));
420- }
421- absl::StatusOr<ObliviousHttpRequest> ohttp_request =
422- ohttp_client_->CreateObliviousHttpRequest (*encoded_request);
423- if (!ohttp_request.ok ()) {
424- return absl::InternalError (
425- absl::StrCat (" Failed to create OHTTP request: " ,
426- ohttp_request.status ().message ()));
427- }
428- encrypted_data = ohttp_request->EncapsulateAndSerialize ();
429- pending_request.context .emplace (std::move (*ohttp_request).ReleaseContext ());
417+ QUICHE_ASSIGN_OR_RETURN (
418+ ObliviousHttpRequest ohttp_request,
419+ ohttp_client_->CreateObliviousHttpRequest (encoded_data));
420+ encrypted_data = ohttp_request.EncapsulateAndSerialize ();
421+ pending_request.context .emplace (std::move (ohttp_request).ReleaseContext ());
430422 }
431423 Message request;
432424 request.headers [" :method" ] = " POST" ;
0 commit comments