dovecot-2.2: fts-solr: Fixed sending empty parameters.

dovecot at dovecot.org dovecot at dovecot.org
Fri Nov 27 13:50:29 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/feba082aede2
changeset: 19430:feba082aede2
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Nov 27 15:49:58 2015 +0200
description:
fts-solr: Fixed sending empty parameters.
Solr probably doesn't do anything useful with them, but we shouldn't get 400
Bad Request errors.

diffstat:

 src/plugins/fts-solr/fts-backend-solr-old.c |  3 +++
 src/plugins/fts-solr/fts-backend-solr.c     |  8 ++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diffs (38 lines):

diff -r 695391a09045 -r feba082aede2 src/plugins/fts-solr/fts-backend-solr-old.c
--- a/src/plugins/fts-solr/fts-backend-solr-old.c	Fri Nov 27 15:26:31 2015 +0200
+++ b/src/plugins/fts-solr/fts-backend-solr-old.c	Fri Nov 27 15:49:58 2015 +0200
@@ -146,6 +146,9 @@
 	string_t *ret;
 	unsigned int i;
 
+	if (str[0] == '\0')
+		return "\"\"";
+
 	ret = t_str_new(strlen(str) + 16);
 	for (i = 0; str[i] != '\0'; i++) {
 		if (strchr(solr_escape_chars, str[i]) != NULL)
diff -r 695391a09045 -r feba082aede2 src/plugins/fts-solr/fts-backend-solr.c
--- a/src/plugins/fts-solr/fts-backend-solr.c	Fri Nov 27 15:26:31 2015 +0200
+++ b/src/plugins/fts-solr/fts-backend-solr.c	Fri Nov 27 15:49:58 2015 +0200
@@ -161,7 +161,10 @@
 
 static void solr_quote_http(string_t *dest, const char *str)
 {
-	http_url_escape_param(dest, solr_escape(str));
+	if (str[0] != '\0')
+		http_url_escape_param(dest, solr_escape(str));
+	else
+		str_append(dest, "\"\"");
 }
 
 static struct fts_backend *fts_backend_solr_alloc(void)
@@ -649,7 +652,8 @@
 	/* currently we'll just disable fuzzy searching if there are any
 	   parameters that need escaping. solr doesn't seem to give good
 	   fuzzy results even if we did escape them.. */
-	if (!arg->fuzzy || solr_need_escaping(arg->value.str))
+	if (!arg->fuzzy || arg->value.str[0] == '\0' ||
+	    solr_need_escaping(arg->value.str))
 		solr_quote_http(str, arg->value.str);
 	else {
 		http_url_escape_param(str, arg->value.str);


More information about the dovecot-cvs mailing list