I would like to unblock the test failure on trunk soon. Any comments on the below?
Regards Rüdiger On 6/10/20 4:31 PM, Ruediger Pluem wrote: > Sorry for not testing before and breaking stuff with r1878708. There are > basically two failures here: > > 1. The test failure in t/apache/http_strict.t is because I missed to adjust > the test and I think the following would do > (at least it now passes again): > > Index: t/apache/http_strict.t > =================================================================== > --- t/apache/http_strict.t (revision 1878712) > +++ t/apache/http_strict.t (working copy) > @@ -12,6 +12,10 @@ > need_min_apache_fix("2.4.34", "2.5.1") : > need_min_apache_version('2.4.34'); > > +my $test_unsupported_version = defined(&need_min_apache_fix) ? > + need_min_apache_fix("2.5.1") : > + need_min_apache_version('2.5.1'); > + > # possible expected results: > # 0: any HTTP error > # 1: any HTTP success > @@ -32,7 +36,7 @@ > [ "GET\t/ HTTP/1.0\r\n\r\n" => 400], > [ "GET / HTT/1.0\r\n\r\n" => 0], > [ "GET / HTTP/1.0\r\nHost: localhost\r\n\r\n" => 1], > - [ "GET / HTTP/2.0\r\nHost: localhost\r\n\r\n" => 1], > + [ "GET / HTTP/2.0\r\nHost: localhost\r\n\r\n" => 1, 505, > $test_unsupported_version], > [ "GET / HTTP/1.2\r\nHost: localhost\r\n\r\n" => 1], > [ "GET / HTTP/1.11\r\nHost: localhost\r\n\r\n" => 400], > [ "GET / HTTP/10.0\r\nHost: localhost\r\n\r\n" => 400], > > > 2. The test failures in t/modules/http2.t are caused because in > modules/http2/h2_request.c(h2_request_create_rec) > we call ap_parse_request_line with a static 'HTTP/2.0' version string in > order to > 'Validate HTTP/1 request' as the comment states. In practice this request > that we give to ap_parse_request_line > should be a valid HTTP/1.x request as otherwise ap_parse_request_line > could fail. So I though of the following patch > below which makes the tests pass again. I will reset r->proto_num and > r->protocol afterwards to ensure that for > further processing (e.g. env vars, logging) it is clear that this was > actually a HTTP/2.0 request and keep the previous > behavior with regards to this. > Comments or different approaches? > > Index: modules/http2/h2_request.c > =================================================================== > --- modules/http2/h2_request.c (revision 1878470) > +++ modules/http2/h2_request.c (working copy) > @@ -278,7 +278,11 @@ request_rec *h2_request_create_rec(const h2_reques > > /* Time to populate r with the data we have. */ > r->request_time = req->request_time; > - r->the_request = apr_psprintf(r->pool, "%s %s HTTP/2.0", > + /* > + * Use HTTP/1.1 as ap_parse_request_line only deals with > + * HTTP/1.x requests. > + */ > + r->the_request = apr_psprintf(r->pool, "%s %s HTTP/1.1", > req->method, req->path ? req->path : ""); > r->headers_in = apr_table_clone(r->pool, req->headers); > > @@ -293,8 +297,14 @@ request_rec *h2_request_create_rec(const h2_reques > r->per_dir_config = r->server->lookup_defaults; > access_status = r->status; > r->status = HTTP_OK; > + /* Note that this is actually a HTTP/2.0 request */ > + r->proto_num = HTTP_VERSION(2,0); > + r->protocol = "HTTP/2.0"; > goto die; > } > + /* Note that this is actually a HTTP/2.0 request */ > + r->proto_num = HTTP_VERSION(2,0); > + r->protocol = "HTTP/2.0"; > > /* we may have switched to another server */ > r->per_dir_config = r->server->lookup_defaults; > > > Regards > > Rüdiger > > On 6/10/20 2:46 PM, Travis CI wrote: >> apache >> >> / >> >> httpd >> >> <https://travis-ci.org/github/apache/httpd?utm_medium=notification&utm_source=email> >> >> branch icontrunk <https://github.com/apache/httpd/tree/trunk> >> >> build has failed >> Build #804 was broken >> <https://travis-ci.org/github/apache/httpd/builds/696809088?utm_medium=notification&utm_source=email> >> arrow to build time >> clock icon12 mins and 35 secs >> >> Ruediger Pluem avatarRuediger Pluem >> >> 97bc128 CHANGESET → >> <https://github.com/apache/httpd/compare/75350541f0af...97bc128df241> >> >> * Have the HTTP 0.9 / 1.1 processing code reject requests for >> HTTP >= 2.0 with a HTTP Version Not Support status code. >> >> >> git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1878708 >> 13f79535-47bb-0310-9956-ffa450edef68 >> >