dovecot-2.2: lib-http: test-http-header-parser makes sure the pa...
dovecot at dovecot.org
dovecot at dovecot.org
Thu Jul 11 09:33:19 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/feac6ec9fa6e
changeset: 16599:feac6ec9fa6e
user: Timo Sirainen <tss at iki.fi>
date: Thu Jul 11 09:33:13 2013 +0300
description:
lib-http: test-http-header-parser makes sure the parser works one byte at a time.
diffstat:
src/lib-http/test-http-header-parser.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diffs (36 lines):
diff -r 55ae488349d2 -r feac6ec9fa6e src/lib-http/test-http-header-parser.c
--- a/src/lib-http/test-http-header-parser.c Thu Jul 11 09:29:36 2013 +0300
+++ b/src/lib-http/test-http-header-parser.c Thu Jul 11 09:33:13 2013 +0300
@@ -127,20 +127,28 @@
const unsigned char *field_data;
size_t field_size;
int ret;
- int j;
+ unsigned int j, pos, header_len;
header = valid_header_parse_tests[i].header;
- input = i_stream_create_from_data(header, strlen(header));
+ header_len = strlen(header);
+ input = test_istream_create_data(header, header_len);
parser = http_header_parser_init(input);
test_begin(t_strdup_printf("http header valid [%d]", i));
- j = 0;
+ j = 0; pos = 0; test_istream_set_size(input, 0);
while ((ret=http_header_parse_next_field
- (parser, &field_name, &field_data, &field_size, &error)) > 0) {
+ (parser, &field_name, &field_data, &field_size, &error)) >= 0) {
const struct http_header_parse_result *result;
const char *field_value;
+ if (ret == 0) {
+ if (pos == header_len)
+ break;
+ test_istream_set_size(input, ++pos);
+ continue;
+ }
+
if (field_name == NULL) break;
result = &valid_header_parse_tests[i].fields[j];
More information about the dovecot-cvs
mailing list