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

Reply via email to