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;
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)
{
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;
}