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, "&");
break;
@@ -40,10 +43,15 @@ static void xml_encode(string_t *dest, c
str_append(dest, ">");
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