Skip to content

Commit 5829245

Browse files
committed
fix encoder loop
1 parent f463ee3 commit 5829245

2 files changed

Lines changed: 3 additions & 1 deletion

File tree

include/aws/http/private/h1_encoder.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ struct aws_h1_encoder_message {
5757
uint64_t content_length;
5858
bool has_connection_close_header;
5959
bool has_chunked_encoding_header;
60+
bool has_manual_data_writes;
6061
};
6162

6263
enum aws_h1_encoder_state {

source/h1_encoder.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,7 @@ int aws_h1_encoder_message_init_from_request(
255255
message->body = aws_input_stream_acquire(aws_http_message_get_body_stream(request));
256256
message->pending_chunk_list = pending_chunk_list;
257257
message->pending_data_write_list = pending_data_write_list;
258+
message->has_manual_data_writes = use_manual_data_writes;
258259

259260
struct aws_byte_cursor method;
260261
int err = aws_http_message_get_request_method(request, &method);
@@ -745,7 +746,7 @@ static int s_state_fn_head(struct aws_h1_encoder *encoder, struct aws_byte_buf *
745746
aws_byte_buf_clean_up(&encoder->message->outgoing_head_buf);
746747

747748
/* Pick next state */
748-
if (!encoder->message->has_chunked_encoding_header && encoder->message->pending_data_write_list && encoder->message->content_length) {
749+
if (!encoder->message->has_chunked_encoding_header && encoder->message->has_manual_data_writes && encoder->message->content_length) {
749750
/* Manual data writes with Content-Length */
750751
return s_switch_state(encoder, AWS_H1_ENCODER_STATE_DATA_WRITE_NEXT);
751752

0 commit comments

Comments
 (0)