comparison src/plugins/fts-solr/fts-backend-solr.c @ 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
comparison
equal deleted inserted replaced
7999:1ceb49f2eb50 8000:61be6a4722c5
24 static void solr_quote_str(string_t *dest, const char *str) 24 static void solr_quote_str(string_t *dest, const char *str)
25 { 25 {
26 solr_connection_quote_str(solr_conn, dest, str); 26 solr_connection_quote_str(solr_conn, dest, str);
27 } 27 }
28 28
29 static void xml_encode(string_t *dest, const char *str) 29 static void
30 { 30 xml_encode_data(string_t *dest, const unsigned char *data, unsigned int len)
31 for (; *str != '\0'; str++) { 31 {
32 switch (*str) { 32 unsigned int i;
33
34 for (i = 0; i < len; i++) {
35 switch (data[i]) {
33 case '&': 36 case '&':
34 str_append(dest, "&amp;"); 37 str_append(dest, "&amp;");
35 break; 38 break;
36 case '<': 39 case '<':
37 str_append(dest, "&lt;"); 40 str_append(dest, "&lt;");
38 break; 41 break;
39 case '>': 42 case '>':
40 str_append(dest, "&gt;"); 43 str_append(dest, "&gt;");
41 break; 44 break;
42 default: 45 default:
43 str_append_c(dest, *str); 46 str_append_c(dest, data[i]);
44 break; 47 break;
45 } 48 }
46 } 49 }
50 }
51
52 static void xml_encode(string_t *dest, const char *str)
53 {
54 xml_encode_data(dest, (const unsigned char *)str, strlen(str));
47 } 55 }
48 56
49 static struct fts_backend * 57 static struct fts_backend *
50 fts_backend_solr_init(struct mailbox *box ATTR_UNUSED) 58 fts_backend_solr_init(struct mailbox *box ATTR_UNUSED)
51 { 59 {
172 str_len(cmd)); 180 str_len(cmd));
173 } else { 181 } else {
174 i_assert(!(!headers && ctx->headers)); 182 i_assert(!(!headers && ctx->headers));
175 } 183 }
176 184
177 solr_connection_post_more(ctx->post, data, size); 185 str_truncate(cmd, 0);
186 xml_encode_data(cmd, data, size);
187 solr_connection_post_more(ctx->post, str_data(cmd), str_len(cmd));
178 return 0; 188 return 0;
179 } 189 }
180 190
181 static int 191 static int
182 fts_backend_solr_build_deinit(struct fts_backend_build_context *_ctx) 192 fts_backend_solr_build_deinit(struct fts_backend_build_context *_ctx)