Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8000:61be6a4722c5 HEAD
fts-solr: Encode entities when indexing data.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 13 Jul 2008 14:44:03 +0300 |
parents | 1ceb49f2eb50 |
children | 3fbfdda3e5d3 |
files | src/plugins/fts-solr/fts-backend-solr.c |
diffstat | 1 files changed, 15 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- 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 @@ solr_connection_quote_str(solr_conn, dest, str); } -static void xml_encode(string_t *dest, const char *str) +static void +xml_encode_data(string_t *dest, const unsigned char *data, unsigned int len) { - for (; *str != '\0'; str++) { - switch (*str) { + unsigned int i; + + for (i = 0; i < len; i++) { + switch (data[i]) { case '&': str_append(dest, "&"); break; @@ -40,12 +43,17 @@ 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 * fts_backend_solr_init(struct mailbox *box ATTR_UNUSED) { @@ -174,7 +182,9 @@ 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; }