Mercurial > dovecot > original-hg > dovecot-1.2
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, "&"); | 37 str_append(dest, "&"); |
35 break; | 38 break; |
36 case '<': | 39 case '<': |
37 str_append(dest, "<"); | 40 str_append(dest, "<"); |
38 break; | 41 break; |
39 case '>': | 42 case '>': |
40 str_append(dest, ">"); | 43 str_append(dest, ">"); |
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) |