From d1f1ad02d1ed5d83c62fba356259b7c9073608c6 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 11 Jul 2013 09:33:13 +0300 Subject: [PATCH] lib-http: test-http-header-parser makes sure the parser works one byte at a time. --- src/lib-http/test-http-header-parser.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/lib-http/test-http-header-parser.c b/src/lib-http/test-http-header-parser.c index 9215455aea..d6a1af24e2 100644 --- a/src/lib-http/test-http-header-parser.c +++ b/src/lib-http/test-http-header-parser.c @@ -127,20 +127,28 @@ static void test_http_header_parse_valid(void) 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]; -- 2.47.3