Patch: safeguard against too large value for uid being sent to solr for single mailbox searches
John Fawcett
john at voipsupport.it
Sun Jan 9 04:06:56 UTC 2022
Hi
I'm reposting a patch for solr integration which I have been applying
locally. It applies against 2.3.17.1.
Dovecot already has a mechanism when doing solr fts searches on multiple
mailboxes that prevents a too large value for maximum rows being sent to
solr.
#define SOLR_MAX_MULTI_ROWS 100000
(defined and used in plugins/fts-solr/fts-backend-solr.c)
However on single mailbox searches Dovecot uses the last uid of the
mailbox, which can be too large for solr. My suggested patch is to also
limit maximum rows to return on single mailbox searches.
Here is the patch:
diff -ur dovecot-2.3.17.1-orig/src/plugins/fts-solr/fts-backend-solr.c
dovecot-2.3.17.1-new/src/plugins/fts-solr/fts-backend-solr.c
--- dovecot-2.3.17.1-orig/src/plugins/fts-solr/fts-backend-solr.c
2021-12-03 12:48:47.000000000 +0100
+++ dovecot-2.3.17.1-new/src/plugins/fts-solr/fts-backend-solr.c
2022-01-09 01:33:23.401341959 +0100
@@ -837,7 +837,7 @@
str = t_str_new(256);
str_printfa(str,
"wt=xml&fl=uid,score&rows=%u&sort=uid+asc&q=%%7b!lucene+q.op%%3dAND%%7d",
- status.uidnext);
+ I_MIN(status.uidnext,SOLR_MAX_MULTI_ROWS));
prefix_len = str_len(str);
if (solr_add_definite_query_args(str, args, and_args)) {
John
More information about the dovecot
mailing list