int
acism_lookup(ac_trie_t const *psp, const char *text, size_t len,
- ACISM_ACTION *cb, void *context, int *statep)
+ ACISM_ACTION *cb, void *context, int *statep, bool caseless)
{
ac_trie_t const ps = *psp;
char const *cp = text, *endp = cp + len;
+ uint8_t s;
STATE state = *statep;
int ret = 0;
while (cp < endp) {
- _SYMBOL sym = ps.symv[(uint8_t)*cp++];
+ s = caseless ? g_ascii_tolower (*cp++) : *cp++;
+ _SYMBOL sym = ps.symv[s];
if (!sym) {
// Input byte is not in any pattern string.
state = ROOT;
// *state should initially be (0).
int acism_lookup(ac_trie_t const *psp, const char *text, size_t len,
- ACISM_ACTION *cb, void *context, int *statep);
+ ACISM_ACTION *cb, void *context, int *statep, bool caseless);
#endif//ACISM_H
cb.is_html = is_html;
cb.pool = pool;
ret = acism_lookup (url_scanner->search_trie, begin, len,
- rspamd_url_trie_callback, &cb, statep);
+ rspamd_url_trie_callback, &cb, statep, true);
if (ret) {
if (start) {