From: Shravan Rangarajuvenkata (shrarang) Date: Fri, 31 Jan 2020 15:45:55 +0000 (+0000) Subject: Merge pull request #1972 in SNORT/snort3 from ~KAMURTHI/snort3:URL_MATCHING to master X-Git-Tag: 3.0.0-268~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b0d2c78d8b326c6a9a8b758e2b3a2fc0b769a964;p=thirdparty%2Fsnort3.git Merge pull request #1972 in SNORT/snort3 from ~KAMURTHI/snort3:URL_MATCHING to master Squashed commit of the following: commit c62c61b3a77171e76dc64ab42fa86cf6baad31f3 Author: Kanimozhi Murthi Date: Mon Jan 27 13:19:11 2020 -0500 appid: Don't mark HTTP session done if the ssl detector is still in progress --- diff --git a/src/network_inspectors/appid/appid_session_api.cc b/src/network_inspectors/appid/appid_session_api.cc index 3303df976..d84dea487 100644 --- a/src/network_inspectors/appid/appid_session_api.cc +++ b/src/network_inspectors/appid/appid_session_api.cc @@ -260,7 +260,10 @@ AppIdHttpSession* AppIdSessionApi::get_http_session() bool AppIdSessionApi::is_http_inspection_done() { - return asd->is_tp_appid_done(); + return (asd->is_tp_appid_done() and + !(asd->get_session_flags(APPID_SESSION_SSL_SESSION) and + !get_tls_host() and + (asd->service_disco_state!= APPID_DISCO_STATE_FINISHED))); } diff --git a/src/network_inspectors/appid/test/appid_session_api_test.cc b/src/network_inspectors/appid/test/appid_session_api_test.cc index d3a2c1bc3..11a57d670 100644 --- a/src/network_inspectors/appid/test/appid_session_api_test.cc +++ b/src/network_inspectors/appid/test/appid_session_api_test.cc @@ -362,6 +362,24 @@ TEST(appid_session_api, is_http_inspection_done) bool val; val = appid_session_api->is_http_inspection_done(); CHECK_TRUE(val); + mock_session->service_disco_state = APPID_DISCO_STATE_FINISHED; + mock_session->set_session_flags(APPID_SESSION_SSL_SESSION); + val = appid_session_api->is_http_inspection_done(); + CHECK_TRUE(val); + AppidChangeBits change_bits; + mock_session->service_disco_state = APPID_DISCO_STATE_STATEFUL; + mock_session->set_session_flags(APPID_SESSION_SSL_SESSION); + val = appid_session_api->is_http_inspection_done(); + CHECK_FALSE(val); + mock_session->service_disco_state = APPID_DISCO_STATE_STATEFUL; + mock_session->set_session_flags(APPID_SESSION_SSL_SESSION); + mock_session->tsession->set_tls_host("www.cisco.com", 13, change_bits); + val = appid_session_api->is_http_inspection_done(); + CHECK_TRUE(val); + mock_session->service_disco_state = APPID_DISCO_STATE_FINISHED; + mock_session->set_session_flags(APPID_SESSION_SSL_SESSION); + val = appid_session_api->is_http_inspection_done(); + CHECK_TRUE(val); } int main(int argc, char** argv)