(void)rfc822_parse_content_type(&parser, content_type);
astream->part.content_type = i_strdup(str_c(content_type));
} T_END;
+ rfc822_parser_deinit(&parser);
}
static void
} else {
(void)parse_address_list(&ctx, max_addresses);
}
+ rfc822_parser_deinit(&ctx.parser);
return ctx.first_addr;
}
ctx.str = t_str_new(128);
success = message_date_parser_tokens(&ctx, timestamp_r,
timezone_offset_r);
+ rfc822_parser_deinit(&ctx.parser);
} T_END;
return success;
message_cte = MESSAGE_CTE_QP;
break;
}
+ rfc822_parser_deinit(&parser);
return message_cte;
}
str = t_str_new(64);
ret = rfc822_parse_content_type(&parser, str);
ctx->content_type = i_strdup(str_c(str));
- if (ret < 0)
+ if (ret < 0) {
+ rfc822_parser_deinit(&parser);
return;
+ }
rfc2231_parse(&parser, &results);
for (; *results != NULL; results += 2) {
break;
}
}
+ rfc822_parser_deinit(&parser);
}
static bool message_decode_header(struct message_decoder_context *ctx,
success = TRUE;
}
}
+ rfc822_parser_deinit(&parser);
return success;
}
if (ret < 0 ||
(ctx->part->flags & MESSAGE_PART_FLAG_MULTIPART) == 0 ||
- ctx->last_boundary != NULL)
+ ctx->last_boundary != NULL) {
+ rfc822_parser_deinit(&parser);
return;
+ }
rfc2231_parse(&parser, &results);
for (; *results != NULL; results += 2) {
break;
}
}
+ rfc822_parser_deinit(&parser);
}
static bool block_is_at_eoh(const struct message_block *block)
parse_mime_parameters(&parser, pool,
&data->content_type_params,
&data->content_type_params_count);
+ rfc822_parser_deinit(&parser);
}
static void
data->content_transfer_encoding =
p_strdup(pool, str_c(str));
}
+ rfc822_parser_deinit(&parser);
}
static void
rfc822_skip_lwsp(&parser);
str = t_str_new(256);
- if (rfc822_parse_mime_token(&parser, str) < 0)
+ if (rfc822_parse_mime_token(&parser, str) < 0) {
+ rfc822_parser_deinit(&parser);
return;
+ }
data->content_disposition = p_strdup(pool, str_c(str));
parse_mime_parameters(&parser, pool,
&data->content_disposition_params,
&data->content_disposition_params_count);
+ rfc822_parser_deinit(&parser);
}
static void
parser.data++;
rfc822_skip_lwsp(&parser);
}
+ rfc822_parser_deinit(&parser);
if (array_count(&langs) > 0) {
array_append_zero(&langs);
ctx->content_type_text =
strncasecmp(str_c(content_type), "text/", 5) == 0 ||
strncasecmp(str_c(content_type), "message/", 8) == 0;
+ rfc822_parser_deinit(&parser);
}
static void handle_header(struct message_search_context *ctx,
test_assert(rfc2231_parse(&parser, &result) == 0);
for (i = 0; output[i] != NULL && result[i] != NULL; i++)
test_assert(strcmp(output[i], result[i]) == 0);
+ rfc822_parser_deinit(&parser);
test_assert(output[i] == NULL && result[i] == NULL);
test_end();
}
test_assert_idx(rfc822_parse_quoted_string(&parser, str) == tests[i].ret, i);
test_assert_idx(tests[i].ret < 0 ||
strcmp(tests[i].output, str_c(str)) == 0, i);
+ rfc822_parser_deinit(&parser);
str_truncate(str, 0);
}
test_end();
test_assert_idx(strcmp(output[i].value, value) == 0, i);
i++;
}
+ rfc822_parser_deinit(&parser);
test_assert(ret == 0);
test_assert(i == N_ELEMENTS(output));
test_end();
(void)rfc822_parse_content_type(&parser, content_type);
ctx->content_type = str_lcase(i_strdup(str_c(content_type)));
} T_END;
+ rfc822_parser_deinit(&parser);
}
static void
/* type; param; param; .. */
str = t_str_new(32);
- if (rfc822_parse_mime_token(&parser, str) < 0)
+ if (rfc822_parse_mime_token(&parser, str) < 0) {
+ rfc822_parser_deinit(&parser);
return;
+ }
rfc2231_parse(&parser, &results);
filename2 = NULL;
much about the filename actually, just about its extension */
*filename_r = filename2;
}
+ rfc822_parser_deinit(&parser);
}
static struct fts_parser *