app-layer-proto: speed up

AppLayer Proto detection code uses a mix of pattern search and
"probing parsers". The pattern search validates potential matches
using a single pattern search algo. The code was using SpmSearch
for this, but this made it inefficient as it builds a BoyerMoore
context for each search. This lead to significant memory pressure,
especially on high speed/bandwidth boxes.

This patch switches the search calls to BoyerMoore and BoyerMoore-
Nocase directly. This can be done as the ctx' were available already.
pull/795/head
Victor Julien 12 years ago
parent 347c0df9c4
commit ad7eff555d

@ -190,9 +190,9 @@ static AppProto AppLayerProtoDetectPMMatchSignature(const AppLayerProtoDetectPMS
s->cd->offset, s->cd->depth);
if (s->cd->flags & DETECT_CONTENT_NOCASE)
found = SpmNocaseSearch(sbuf, sbuflen, s->cd->content, s->cd->content_len);
found = BoyerMooreNocase(s->cd->content, s->cd->content_len, sbuf, sbuflen, s->cd->bm_ctx->bmGs, s->cd->bm_ctx->bmBc);
else
found = SpmSearch(sbuf, sbuflen, s->cd->content, s->cd->content_len);
found = BoyerMoore(s->cd->content, s->cd->content_len, sbuf, sbuflen, s->cd->bm_ctx->bmGs, s->cd->bm_ctx->bmBc);
if (found != NULL)
proto = s->alproto;

Loading…
Cancel
Save