dovecot-1.2: fts-solr: Encode entities when indexing data.

dovecot at dovecot.org dovecot at dovecot.org
Sun Jul 13 15:15:10 EEST 2008


details:   http://hg.dovecot.org/dovecot-1.2/rev/61be6a4722c5
changeset: 8000:61be6a4722c5
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Jul 13 14:44:03 2008 +0300
description:
fts-solr: Encode entities when indexing data.

diffstat:

1 file changed, 16 insertions(+), 6 deletions(-)
src/plugins/fts-solr/fts-backend-solr.c |   22 ++++++++++++++++------

diffs (49 lines):

diff -r 1ceb49f2eb50 -r 61be6a4722c5 src/plugins/fts-solr/fts-backend-solr.c
--- a/src/plugins/fts-solr/fts-backend-solr.c	Sun Jul 13 14:40:03 2008 +0300
+++ b/src/plugins/fts-solr/fts-backend-solr.c	Sun Jul 13 14:44:03 2008 +0300
@@ -26,10 +26,13 @@ static void solr_quote_str(string_t *des
 	solr_connection_quote_str(solr_conn, dest, str);
 }
 
-static void xml_encode(string_t *dest, const char *str)
-{
-	for (; *str != '\0'; str++) {
-		switch (*str) {
+static void
+xml_encode_data(string_t *dest, const unsigned char *data, unsigned int len)
+{
+	unsigned int i;
+
+	for (i = 0; i < len; i++) {
+		switch (data[i]) {
 		case '&':
 			str_append(dest, "&amp;");
 			break;
@@ -40,10 +43,15 @@ static void xml_encode(string_t *dest, c
 			str_append(dest, "&gt;");
 			break;
 		default:
-			str_append_c(dest, *str);
+			str_append_c(dest, data[i]);
 			break;
 		}
 	}
+}
+
+static void xml_encode(string_t *dest, const char *str)
+{
+	xml_encode_data(dest, (const unsigned char *)str, strlen(str));
 }
 
 static struct fts_backend *
@@ -174,7 +182,9 @@ fts_backend_solr_build_more(struct fts_b
 		i_assert(!(!headers && ctx->headers));
 	}
 
-	solr_connection_post_more(ctx->post, data, size);
+	str_truncate(cmd, 0);
+	xml_encode_data(cmd, data, size);
+	solr_connection_post_more(ctx->post, str_data(cmd), str_len(cmd));
 	return 0;
 }
 


More information about the dovecot-cvs mailing list