]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts-solr: Encode entities when indexing data.
authorTimo Sirainen <tss@iki.fi>
Sun, 13 Jul 2008 11:44:03 +0000 (14:44 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 13 Jul 2008 11:44:03 +0000 (14:44 +0300)
--HG--
branch : HEAD

src/plugins/fts-solr/fts-backend-solr.c

index 8f7406f4d177314a40f6ff0426e5f76c28e128c7..6af0e178ec76f334bf3c933626f4ab2847182b92 100644 (file)
@@ -26,10 +26,13 @@ static void solr_quote_str(string_t *dest, const char *str)
        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, "&amp;");
                        break;
@@ -40,12 +43,17 @@ static void xml_encode(string_t *dest, const char *str)
                        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 *
 fts_backend_solr_init(struct mailbox *box ATTR_UNUSED)
 {
@@ -174,7 +182,9 @@ fts_backend_solr_build_more(struct fts_backend_build_context *_ctx,
                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;
 }