Author: rhuijben Date: Wed Nov 11 12:44:53 2015 New Revision: 1713830 URL: http://svn.apache.org/viewvc?rev=1713830&view=rev Log: Following up on r1713829, extend the test a bit more to also verify the second response. Implement a few more forwards on the barrier buckets to make this possible.
* buckets/barrier_buckets.c (serf_barrier_read_for_sendfile): New function. (serf_barrier_readline2): New function. (serf_bucket_type_barrier): Register forwards. * test/test_buckets.c (test_response_bucket_read): Extend test. Modified: serf/trunk/buckets/barrier_buckets.c serf/trunk/test/test_buckets.c Modified: serf/trunk/buckets/barrier_buckets.c URL: http://svn.apache.org/viewvc/serf/trunk/buckets/barrier_buckets.c?rev=1713830&r1=1713829&r2=1713830&view=diff ============================================================================== --- serf/trunk/buckets/barrier_buckets.c (original) +++ serf/trunk/buckets/barrier_buckets.c Wed Nov 11 12:44:53 2015 @@ -50,6 +50,18 @@ static apr_status_t serf_barrier_read_io return serf_bucket_read_iovec(stream, requested, vecs_size, vecs, vecs_used); } +static apr_status_t serf_barrier_read_for_sendfile(serf_bucket_t *bucket, + apr_size_t requested, + apr_hdtr_t *hdtr, + apr_file_t **file, + apr_off_t *offset, + apr_size_t *len) +{ + serf_bucket_t *stream = bucket->data; + return serf_bucket_read_for_sendfile(bucket, requested, hdtr, file, + offset, len); +} + static apr_status_t serf_barrier_readline(serf_bucket_t *bucket, int acceptable, int *found, const char **data, apr_size_t *len) @@ -59,6 +71,18 @@ static apr_status_t serf_barrier_readlin return serf_bucket_readline(stream, acceptable, found, data, len); } +static apr_status_t serf_barrier_readline2(serf_bucket_t *bucket, + int acceptable, apr_size_t requested, + int *found, + const char **data, apr_size_t *len) +{ + serf_bucket_t *stream = bucket->data; + + return serf_bucket_readline2(stream, acceptable, requested, + found, data, len); +} + + static apr_status_t serf_barrier_peek(serf_bucket_t *bucket, const char **data, apr_size_t *len) @@ -101,12 +125,12 @@ const serf_bucket_type_t serf_bucket_typ serf_barrier_read, serf_barrier_readline, serf_barrier_read_iovec, - serf_default_read_for_sendfile, + serf_barrier_read_for_sendfile, serf_buckets_are_v2, serf_barrier_peek, serf_barrier_destroy, - serf_default_read_bucket, - serf_default_readline2, + serf_default_read_bucket, /* ### TODO? */ + serf_barrier_readline2, serf_barrier_get_remaining, serf_barrier_set_config, }; Modified: serf/trunk/test/test_buckets.c URL: http://svn.apache.org/viewvc/serf/trunk/test/test_buckets.c?rev=1713830&r1=1713829&r2=1713830&view=diff ============================================================================== --- serf/trunk/test/test_buckets.c (original) +++ serf/trunk/test/test_buckets.c Wed Nov 11 12:44:53 2015 @@ -291,6 +291,7 @@ static void test_response_bucket_read(Cu int found; const char *data; apr_size_t len; + serf_status_line sline; serf_bucket_alloc_t *alloc = test__create_bucket_allocator(tc, tb->pool); @@ -316,7 +317,9 @@ static void test_response_bucket_read(Cu CRLF, alloc) - bkt = serf_bucket_response_create(tmp, alloc); + bkt = serf_bucket_response_create( + serf_bucket_barrier_create(tmp, alloc), + alloc); status = serf_bucket_readline(bkt, SERF_NEWLINE_ANY, &found, &data, &len); @@ -324,6 +327,15 @@ static void test_response_bucket_read(Cu CuAssertIntEquals(tc, 7, len); CuAssertStrnEquals(tc, "abc1234", len, data); serf_bucket_destroy(bkt); + + /* 304 has no body, but we should be able to read it */ + bkt = serf_bucket_response_create(tmp, alloc); + read_and_check_bucket(tc, bkt, ""); + + CuAssertIntEquals(tc, APR_SUCCESS, + serf_bucket_response_status(bkt, &sline)); + CuAssertIntEquals(tc, 304, sline.code); + serf_bucket_destroy(bkt); } static void test_response_bucket_headers(CuTest *tc)