Browse Source

libreactor: Use reactor_stream_segment() in write_response() (#6070)

Small cleanup to use existing function instead of duplicating code. No performance impact.
Marc Richards 4 years ago
parent
commit
e21dfb0931
1 changed files with 4 additions and 5 deletions
  1. 4 5
      frameworks/C/libreactor/src/helpers.c

+ 4 - 5
frameworks/C/libreactor/src/helpers.c

@@ -50,22 +50,21 @@ reactor_vector http_content_length_header(uint32_t n)
   return (reactor_vector){header, length + 16 + 4};
 }
 
-// memcpy the response directly to the output buffer and adjust the buffer size accordingly
 void write_response(reactor_stream *stream, reactor_vector preamble, reactor_vector body)
 {
   char *output_buffer_ptr;
   reactor_vector date_header = http_date_header(0); // includes header name and \r\n
   reactor_vector content_length_header = http_content_length_header(body.size); // includes header name and \r\n\r\n
   size_t response_size = preamble.size + date_header.size + content_length_header.size + body.size;
-  size_t output_buffer_size = stream->output.size;
 
-  buffer_reserve(&stream->output, response_size + output_buffer_size);
-  output_buffer_ptr = (char *) buffer_data(&stream->output) + output_buffer_size;
+  // Reserves additional space in the stream's output buffer (if necessary), updates the size, and returns a pointer
+  output_buffer_ptr = reactor_stream_segment(stream, response_size);
+
+  // memcpy the response directly to the output buffer
   memcpy(output_buffer_ptr, preamble.base, preamble.size);
   memcpy(output_buffer_ptr + preamble.size, date_header.base, date_header.size);
   memcpy(output_buffer_ptr + preamble.size + date_header.size, content_length_header.base, content_length_header.size);
   memcpy(output_buffer_ptr + preamble.size + date_header.size + content_length_header.size, body.base, body.size);
-  stream->output.size += response_size;
 }