test-istream-header-filter.c (dovecot-2.3.16) | : | test-istream-header-filter.c (dovecot-2.3.17) | ||
---|---|---|---|---|
skipping to change at line 73 | skipping to change at line 73 | |||
if (first && ((flags & HEADER_FILTER_ADD_MISSING_EOH) != 0)) | if (first && ((flags & HEADER_FILTER_ADD_MISSING_EOH) != 0)) | |||
test_assert(run_ctx->eoh_seen); | test_assert(run_ctx->eoh_seen); | |||
data = i_stream_get_data(filter, size_r); | data = i_stream_get_data(filter, size_r); | |||
test_assert(*size_r == strlen(output) && | test_assert(*size_r == strlen(output) && | |||
memcmp(data, output, *size_r) == 0); | memcmp(data, output, *size_r) == 0); | |||
test_assert(i_stream_stat(filter, TRUE, &st) == 0 && | test_assert(i_stream_stat(filter, TRUE, &st) == 0 && | |||
(uoff_t)st->st_size == *size_r); | (uoff_t)st->st_size == *size_r); | |||
/* make sure buffer doesn't change when returning -1 */ | ||||
i_stream_skip(filter, 1); | ||||
test_assert(i_stream_read(filter) == -1); | ||||
test_assert(memcmp(data, output, *size_r) == 0); | ||||
} | } | |||
static void | static void | |||
test_istream_run(struct istream *test_istream, | test_istream_run(struct istream *test_istream, | |||
unsigned int input_len, const char *output, | unsigned int input_len, const char *output, | |||
enum header_filter_flags flags, | enum header_filter_flags flags, | |||
header_filter_callback *callback) | header_filter_callback *callback) | |||
{ | { | |||
struct run_ctx run_ctx; | struct run_ctx run_ctx; | |||
struct istream *filter; | struct istream *filter; | |||
skipping to change at line 245 | skipping to change at line 250 | |||
filter2_callback, | filter2_callback, | |||
&null_hdr_seen); | &null_hdr_seen); | |||
for (i = 0; i < 2; i++) { | for (i = 0; i < 2; i++) { | |||
for (;;) { | for (;;) { | |||
ssize_t ret = i_stream_read(filter); | ssize_t ret = i_stream_read(filter); | |||
i_assert(ret != 0); | i_assert(ret != 0); | |||
if (ret == -1) | if (ret == -1) | |||
break; | break; | |||
if (ret == -2) { | if (ret == -2) { | |||
unsigned char orig_data[128]; | ||||
size_t orig_data_size; | ||||
data = i_stream_get_data(filter, &size); | data = i_stream_get_data(filter, &size); | |||
orig_data_size = I_MIN(sizeof(orig_data), size); | ||||
memcpy(orig_data, data, orig_data_size); | ||||
/* skip only a bit */ | ||||
size = I_MIN(size, 1); | ||||
str_append_data(output, data, size); | ||||
i_stream_skip(filter, size); | ||||
/* do another read */ | ||||
ret = i_stream_read(filter); | ||||
i_assert(ret == -2 || ret > 0); | ||||
/* make sure the old data pointer is still | ||||
usable if -2 is returned */ | ||||
if (ret != -2) | ||||
data = i_stream_get_data(filter, &size); | ||||
else { | ||||
test_assert(memcmp(data, orig_data, orig_ | ||||
data_size) == 0); | ||||
data = i_stream_get_data(filter, &size); | ||||
} | ||||
str_append_data(output, data, size); | str_append_data(output, data, size); | |||
i_stream_skip(filter, size); | i_stream_skip(filter, size); | |||
} | } | |||
} | } | |||
/* callbacks are called only once */ | /* callbacks are called only once */ | |||
test_assert(null_hdr_seen == (i == 0)); | test_assert(null_hdr_seen == (i == 0)); | |||
data = i_stream_get_data(filter, &size); | data = i_stream_get_data(filter, &size); | |||
test_assert(size <= 8192); | test_assert(size <= 8192); | |||
str_append_data(output, data, size); | str_append_data(output, data, size); | |||
End of changes. 3 change blocks. | ||||
0 lines changed or deleted | 28 lines changed or added |