Lines Matching refs:parser
10 #include "message-parser.h"
12 #include "fts-parser.h"
23 struct fts_parser parser;
88 struct tika_fts_parser *parser)
90 i_assert(parser->payload == NULL);
96 parser->payload = i_stream_create_from_data("", 0);
99 parser->payload = response->payload;
105 if (parser->user->mail_debug) {
107 mail_user_plugin_getenv(parser->user, "fts_tika"),
110 parser->payload = i_stream_create_from_data("", 0);
118 parser->parser.may_need_retry = TRUE;
119 i_free(parser->parser.retriable_error_msg);
120 parser->parser.retriable_error_msg =
122 mail_user_plugin_getenv(parser->user, "fts_tika"),
124 parser->payload = i_stream_create_from_data("", 0);
127 mail_user_plugin_getenv(parser->user, "fts_tika"),
129 parser->failed = TRUE;
133 parser->http_req = NULL;
140 struct tika_fts_parser *parser;
149 parser = i_new(struct tika_fts_parser, 1);
150 parser->parser.v = fts_parser_tika;
151 parser->user = parser_context->user;
156 fts_tika_parser_response, parser);
167 parser->http_req = http_req;
168 return &parser->parser;
174 struct tika_fts_parser *parser = (struct tika_fts_parser *)_parser;
182 if (!parser->failed &&
183 http_client_request_send_payload(&parser->http_req,
186 parser->failed = TRUE;
191 if (parser->payload == NULL) {
193 if (!parser->failed &&
194 http_client_request_finish_payload(&parser->http_req) < 0)
195 parser->failed = TRUE;
196 if (!parser->failed && parser->payload == NULL)
198 if (parser->failed)
200 i_assert(parser->payload != NULL);
204 while ((ret = i_stream_read_more(parser->payload, &data, &size)) == 0) {
205 if (parser->failed)
208 if (parser->ioloop == NULL) {
209 parser->ioloop = io_loop_create();
210 parser->io = io_add_istream(parser->payload, io_loop_stop,
213 io_loop_set_current(parser->ioloop);
220 if (parser->failed)
226 i_stream_skip(parser->payload, size);
230 if (parser->payload->stream_errno != 0) {
232 i_stream_get_name(parser->payload),
233 i_stream_get_error(parser->payload));
234 parser->failed = TRUE;
241 struct tika_fts_parser *parser = (struct tika_fts_parser *)_parser;
242 int ret = _parser->may_need_retry ? 0: (parser->failed ? -1 : 1);
251 i_stream_unref(&parser->payload);
252 io_remove(&parser->io);
253 if (parser->http_req != NULL)
254 http_client_request_abort(&parser->http_req);
255 if (parser->ioloop != NULL) {
256 io_loop_set_current(parser->ioloop);
257 io_loop_destroy(&parser->ioloop);
259 i_free(parser);