From d3fbde6e9bf254b7c25cc2c476388da70022c4a2 Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 19 Oct 2020 11:26:24 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B0=20=D0=BD=D0=B0=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D1=83=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B8=20?= =?UTF-8?q?=D1=85=D0=BE=D1=81=D1=82=D0=B0=20=D0=B1=D0=B5=D0=B7=20=D1=83?= =?UTF-8?q?=D0=BA=D0=B0=D0=B7=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D1=80?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.cpp | 4 ++-- src/tries.cpp | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index c934998..7f94940 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -205,13 +205,13 @@ void extFilter::initParams() if(http_entries) prm->memory_configs.http_entries = http_entries; else - prm->memory_configs.http_entries = _calc_scale(scale, 70000, 250000); + prm->memory_configs.http_entries = _calc_scale(scale, 100000, 400000); int ssl_entries = config().getInt("dpi.ssl_entries", 0); if(ssl_entries) prm->memory_configs.ssl_entries = ssl_entries; else - prm->memory_configs.ssl_entries = _calc_scale(scale, 150000, 470000); + prm->memory_configs.ssl_entries = _calc_scale(scale, 170000, 800000); prm->answer_duplication = config().getInt("answer_duplication", 0); if(prm->answer_duplication > 3) diff --git a/src/tries.cpp b/src/tries.cpp index 1cfd51b..61c5211 100644 --- a/src/tries.cpp +++ b/src/tries.cpp @@ -259,15 +259,26 @@ int TriesManager::checkURLBlocked(int thread_id, const char *hostname, uint32_t rhost = &revhostname[sizeof(revhostname) - 1 - host_len]; } // перевод hostname в маленькие буквы и копирование hostname в обратном порядке в revhostname + uint32_t revhost_len = 0; char *rh = &revhostname[sizeof(revhostname)-2]; - for(uint32_t i = 0; i < host_len; i++, rh--) + bool found_colon = false; + for(uint32_t i = 0; i < host_len; i++) { char v = hostname[i]; if( v >= 'A' && v <= 'Z') v |= 0x20; + else if(v == ':') + found_colon = true; url_buf[i] = v; - *rh = v; + if(!found_colon) + { + *rh = v; + revhost_len++; + rh--; + } } + if(found_colon) + rhost = &revhostname[sizeof(revhostname) - 1 - revhost_len]; if(uri_len != 0) { for(uint32_t i = 0; i < uri_len; i++) @@ -276,7 +287,7 @@ int TriesManager::checkURLBlocked(int thread_id, const char *hostname, uint32_t url_buf[buf_len] = 0; try { - if(_bl_manager.getHttpBlacklist()->getActiveTrie()->search_prefix(&_agents[thread_id], rhost, host_len, url_buf, buf_len)) + if(_bl_manager.getHttpBlacklist()->getActiveTrie()->search_prefix(&_agents[thread_id], rhost, revhost_len, url_buf, buf_len)) { struct BlacklistsManager::bl_service_profile *sp = _bl_manager.getActiveSP(); if(redir_url && sp->redir_url[0] != 0) // make redir url