Done in r1740075.
I think that commit introduced a small bug, because the "for" loop is left when "h2" is seen and "report_all" is false. There may be other protocols that are more preferred than the current one.
Suggested change: Index: server/protocol.c =================================================================== --- server/protocol.c (revision 1740112) +++ server/protocol.c (working copy) @@ -2017,15 +2017,18 @@ * existing. (TODO: maybe 426 and Upgrade then?) */ upgrades = apr_array_make(pool, conf->protocols->nelts + 1, sizeof(char *)); for (i = 0; i < conf->protocols->nelts; i++) { const char *p = APR_ARRAY_IDX(conf->protocols, i, char *); /* special quirk for HTTP/2 which does not allow 'h2' to * be part of an Upgrade: header */ - if (strcmp(existing, p) && strcmp("h2", p)) { + if (!strcmp("h2", p)) { + continue; + } + if (strcmp(existing, p)) { /* not the one we have and possible, add in this order */ APR_ARRAY_PUSH(upgrades, const char*) = p; } else if (!report_all) { break; } } Regards, Michael