Copilot commented on code in PR #13422:
URL: https://github.com/apache/trafficserver/pull/13422#discussion_r3638956612


##########
include/proxy/hdrs/HTTP.h:
##########
@@ -616,10 +630,72 @@ class HTTPHdr : public MIMEHdr
   void mark_early_data(bool flag = true) const;
   bool is_early_data() const;
 
+  /**
+   * Parse an HTTP/1.x request header incrementally from a raw buffer.
+   *
+   * Parses input data into the header's request fields. Call repeatedly with 
the same @p parser
+   * until a result other than @c ParseResult::CONT is returned. When @c 
ParseResult::DONE is
+   * returned, the request method, URL, version, and header fields are set on 
this header.
+   *
+   * @param parser              Parser state. Must be the same object on each 
call for a given message.
+   * @param start               On entry, points to the first unparsed byte; 
on return,
+   *                            advanced past all consumed bytes.
+   * @param end                 One past the last available byte of input.
+   * @param eof                 @c true if no more data will follow @p end.
+   * @param strict_uri_parsing  URI compliance level: @c 0 performs no 
compliance check; @c 1 rejects
+   *                            the URI unless every character is a valid RFC 
3986 URI character; @c 2
+   *                            is more permissive, rejecting the URI only if 
it contains whitespace or
+   *                            non-printable characters. Other values behave 
like @c 0.
+   * @param max_request_line_size  Maximum byte length of the request line; 
exceeding it returns
+   *                               @c ParseResult::ERROR.
+   * @param max_hdr_field_size     Maximum byte length of a single header 
field; exceeding it
+   *                               returns @c ParseResult::ERROR.
+   *
+   * @return @c ParseResult::DONE if a complete valid request header has been 
parsed;
+   *         @c ParseResult::CONT if more data is required;
+   *         @c ParseResult::ERROR on a protocol error or exceeded limit.
+   *
+   * @pre The header must be initialized with @c HTTPType::REQUEST polarity.
+   *
+   * @par Thread Safety
+   *   Not thread-safe.
+   */
   ParseResult parse_req(HTTPParser *parser, const char **start, const char 
*end, bool eof, int strict_uri_parsing = 0,
                         size_t max_request_line_size = UINT16_MAX, size_t 
max_hdr_field_size = 131070);
   ParseResult parse_resp(HTTPParser *parser, const char **start, const char 
*end, bool eof);
 
+  /**
+   * Parse an HTTP/1.x request header incrementally from an @c IOBufferReader.
+   *
+   * Reads and consumes data from @p r, parsing it into the header's request 
fields. Call
+   * repeatedly with the same @p parser until a result other than @c 
ParseResult::CONT is
+   * returned. When @c ParseResult::DONE is returned, the request method, URL, 
version, and
+   * header fields are set on this header.
+   *
+   * @param parser              Parser state. Must be the same object on each 
call for a given message.
+   * @param r                   Source of input data; bytes consumed by the 
parser are removed from
+   *                            the reader.
+   * @param bytes_used          Set to the number of bytes consumed from @p r.
+   * @param eof                 @c true if no more data will be provided after 
what is currently

Review Comment:
   `parse_req(HTTPParser*, IOBufferReader*, int*, ...)` dereferences 
`bytes_used` unconditionally (`*bytes_used = 0;`), so the Doxygen should state 
that `bytes_used` must be non-null. As written, callers may assume they can 
pass `nullptr` to ignore this output, which would crash.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to