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)