]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
http2: do not try to upgrade if http2 is disabled in config 6433/head
authorPhilippe Antoine <contact@catenacyber.fr>
Wed, 15 Sep 2021 14:22:00 +0000 (16:22 +0200)
committerVictor Julien <victor@inliniac.net>
Fri, 1 Oct 2021 06:10:04 +0000 (08:10 +0200)
src/app-layer-htp.c

index 9daa5e7adf5a9a3169a69daae774fc3d8aef05c0..380e61d3e1b9bb43e85f5f6b01aae2256a538195 100644 (file)
@@ -925,10 +925,11 @@ static AppLayerResult HTPHandleResponseData(Flow *f, void *htp_state,
                 if (tx != NULL && tx->response_status_number == 101) {
                     htp_header_t *h =
                             (htp_header_t *)htp_table_get_c(tx->response_headers, "Upgrade");
-                    if (h == NULL) {
+                    if (h == NULL || bstr_cmp_c(h->value, "h2c") != 0) {
                         break;
                     }
-                    if (bstr_cmp_c(h->value, "h2c") != 0) {
+                    if (AppLayerProtoDetectGetProtoName(ALPROTO_HTTP2) == NULL) {
+                        // if HTTP2 is disabled, keep the HTP_STREAM_TUNNEL mode
                         break;
                     }
                     uint16_t dp = 0;
@@ -940,8 +941,7 @@ static AppLayerResult HTPHandleResponseData(Flow *f, void *htp_state,
                     // During HTTP2 upgrade, we may consume the HTTP1 part of the data
                     // and we need to parser the remaining part with HTTP2
                     if (consumed > 0 && consumed < input_len) {
-                        SCReturnStruct(
-                                APP_LAYER_INCOMPLETE(consumed, input_len - consumed));
+                        SCReturnStruct(APP_LAYER_INCOMPLETE(consumed, input_len - consumed));
                     }
                     SCReturnStruct(APP_LAYER_OK);
                 }