arturobernalg commented on code in PR #428: URL: https://github.com/apache/httpcomponents-core/pull/428#discussion_r1330579222
########## httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/DefaultH2RequestConverter.java: ########## @@ -208,4 +210,39 @@ public List<Header> convert(final HttpRequest message) throws HttpException { return headers; } + /** + * Validates the {@code :path} pseudo-header field based on the provided HTTP method and scheme. + * <p> + * This method performs the following validations: + * </p> + * <ul> + * <li><strong>Non-Empty Path:</strong> For 'http' or 'https' URIs, the {@code :path} pseudo-header field must not be empty.</li> + * <li><strong>OPTIONS Method:</strong> If the HTTP method is OPTIONS and the URI does not contain a path component, + * the {@code :path} pseudo-header field must have a value of '*'. </li> + * <li><strong>Path Starting with '/':</strong> For 'http' or 'https' URIs, the {@code :path} pseudo-header field must either start with '/' or be '*'. </li> + * </ul> + * + * @param method The HTTP method of the request, e.g., GET, POST, OPTIONS, etc. + * @param scheme The scheme of the request, e.g., http or https. + * @param path The value of the {@code :path} pseudo-header field. + * @throws ProtocolException if any of the validations fail. + */ + private void validatePathPseudoHeader(final String method, final String scheme, final String path) throws ProtocolException { + if (URIScheme.HTTP.name().equalsIgnoreCase(scheme) || URIScheme.HTTPS.name().equalsIgnoreCase(scheme)) { + if (TextUtils.isBlank(path)) { + throw new ProtocolException("':path' pseudo-header field must not be empty for 'http' or 'https' URIs"); + } else { + if (Method.OPTIONS.isSame(method)) { + if (!"*".equals(path)) { + throw new ProtocolException("OPTIONS request for an 'http' or 'https' URI without a path component must have a ':path' pseudo-header field with a value of '*'"); Review Comment: @ok2c please check again. -- 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: dev-unsubscr...@hc.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org