tests: Use nghttp2_mem instead of raw malloc()/free()

Fixes GH-170
This commit is contained in:
Tatsuhiro Tsujikawa 2015-03-03 23:23:43 +09:00
parent 291c27c940
commit a2a9f15307
8 changed files with 239 additions and 183 deletions

View File

@ -433,7 +433,7 @@ void test_nghttp2_frame(void) {
static int deflate_inflate(nghttp2_hd_deflater *deflater, static int deflate_inflate(nghttp2_hd_deflater *deflater,
nghttp2_hd_inflater *inflater, nghttp2_bufs *bufs, nghttp2_hd_inflater *inflater, nghttp2_bufs *bufs,
nghttp2_nv *nva, size_t nvlen) { nghttp2_nv *nva, size_t nvlen, nghttp2_mem *mem) {
int rv; int rv;
rv = nghttp2_hd_deflate_hd_bufs(deflater, bufs, nva, nvlen); rv = nghttp2_hd_deflate_hd_bufs(deflater, bufs, nva, nvlen);
@ -442,7 +442,7 @@ static int deflate_inflate(nghttp2_hd_deflater *deflater,
return rv; return rv;
} }
rv = (int)inflate_hd(inflater, NULL, bufs, 0); rv = (int)inflate_hd(inflater, NULL, bufs, 0, mem);
if (rv < 0) { if (rv < 0) {
return rv; return rv;
@ -484,13 +484,15 @@ static void run_nghttp2_hd(void) {
goto inflate_init_fail; goto inflate_init_fail;
} }
rv = deflate_inflate(&deflater, &inflater, &bufs, nva1, ARRLEN(nva1)); rv = deflate_inflate(&deflater, &inflater, &bufs, nva1, ARRLEN(nva1),
nghttp2_mem_fm());
if (rv != 0) { if (rv != 0) {
goto deflate_hd_fail; goto deflate_hd_fail;
} }
rv = deflate_inflate(&deflater, &inflater, &bufs, nva2, ARRLEN(nva2)); rv = deflate_inflate(&deflater, &inflater, &bufs, nva2, ARRLEN(nva2),
nghttp2_mem_fm());
if (rv != 0) { if (rv != 0) {
goto deflate_hd_fail; goto deflate_hd_fail;

View File

@ -201,7 +201,7 @@ void test_nghttp2_bufs_remove(void) {
CU_ASSERT(0 == nghttp2_bufs_len(&bufs)); CU_ASSERT(0 == nghttp2_bufs_len(&bufs));
CU_ASSERT(bufs.cur->buf.pos == bufs.cur->buf.begin); CU_ASSERT(bufs.cur->buf.pos == bufs.cur->buf.begin);
free(out); mem->free(out, NULL);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
} }

View File

@ -47,8 +47,8 @@ static nghttp2_nv make_nv(const char *name, const char *value) {
#define HEADERS_LENGTH 7 #define HEADERS_LENGTH 7
static nghttp2_nv *headers(void) { static nghttp2_nv *headers(nghttp2_mem *mem) {
nghttp2_nv *nva = malloc(sizeof(nghttp2_nv) * HEADERS_LENGTH); nghttp2_nv *nva = mem->malloc(sizeof(nghttp2_nv) * HEADERS_LENGTH, NULL);
nva[0] = make_nv("method", "GET"); nva[0] = make_nv("method", "GET");
nva[1] = make_nv("scheme", "https"); nva[1] = make_nv("scheme", "https");
nva[2] = make_nv("url", "/"); nva[2] = make_nv("url", "/");
@ -88,7 +88,7 @@ void test_nghttp2_frame_pack_headers() {
nghttp2_hd_deflate_init(&deflater, mem); nghttp2_hd_deflate_init(&deflater, mem);
nghttp2_hd_inflate_init(&inflater, mem); nghttp2_hd_inflate_init(&inflater, mem);
nva = headers(); nva = headers(mem);
nvlen = HEADERS_LENGTH; nvlen = HEADERS_LENGTH;
nghttp2_priority_spec_default_init(&pri_spec); nghttp2_priority_spec_default_init(&pri_spec);
@ -113,14 +113,14 @@ void test_nghttp2_frame_pack_headers() {
hdblocklen = nghttp2_bufs_len(&bufs) - NGHTTP2_FRAME_HDLEN; hdblocklen = nghttp2_bufs_len(&bufs) - NGHTTP2_FRAME_HDLEN;
CU_ASSERT(hdblocklen == CU_ASSERT(hdblocklen ==
inflate_hd(&inflater, &out, &bufs, NGHTTP2_FRAME_HDLEN)); inflate_hd(&inflater, &out, &bufs, NGHTTP2_FRAME_HDLEN, mem));
CU_ASSERT(7 == out.nvlen); CU_ASSERT(7 == out.nvlen);
CU_ASSERT(nvnameeq("method", &out.nva[0])); CU_ASSERT(nvnameeq("method", &out.nva[0]));
CU_ASSERT(nvvalueeq("GET", &out.nva[0])); CU_ASSERT(nvvalueeq("GET", &out.nva[0]));
nghttp2_frame_headers_free(&oframe, mem); nghttp2_frame_headers_free(&oframe, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
memset(&oframe, 0, sizeof(oframe)); memset(&oframe, 0, sizeof(oframe));
@ -149,13 +149,14 @@ void test_nghttp2_frame_pack_headers() {
CU_ASSERT(hdblocklen == CU_ASSERT(hdblocklen ==
inflate_hd(&inflater, &out, &bufs, inflate_hd(&inflater, &out, &bufs,
NGHTTP2_FRAME_HDLEN + NGHTTP2_FRAME_HDLEN +
nghttp2_frame_priority_len(oframe.hd.flags))); nghttp2_frame_priority_len(oframe.hd.flags),
mem));
nghttp2_nv_array_sort(out.nva, out.nvlen); nghttp2_nv_array_sort(out.nva, out.nvlen);
CU_ASSERT(nvnameeq("method", &out.nva[0])); CU_ASSERT(nvnameeq("method", &out.nva[0]));
nghttp2_frame_headers_free(&oframe, mem); nghttp2_frame_headers_free(&oframe, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
@ -181,7 +182,7 @@ void test_nghttp2_frame_pack_headers_frame_too_large(void) {
for (i = 0; i < big_hdslen; ++i) { for (i = 0; i < big_hdslen; ++i) {
big_hds[i].name = (uint8_t *)"header"; big_hds[i].name = (uint8_t *)"header";
big_hds[i].value = malloc(big_vallen + 1); big_hds[i].value = mem->malloc(big_vallen + 1, NULL);
memset(big_hds[i].value, '0' + (int)i, big_vallen); memset(big_hds[i].value, '0' + (int)i, big_vallen);
big_hds[i].value[big_vallen] = '\0'; big_hds[i].value[big_vallen] = '\0';
big_hds[i].namelen = strlen((char *)big_hds[i].name); big_hds[i].namelen = strlen((char *)big_hds[i].name);
@ -200,7 +201,7 @@ void test_nghttp2_frame_pack_headers_frame_too_large(void) {
nghttp2_frame_headers_free(&frame, mem); nghttp2_frame_headers_free(&frame, mem);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
for (i = 0; i < big_hdslen; ++i) { for (i = 0; i < big_hdslen; ++i) {
free(big_hds[i].value); mem->free(big_hds[i].value, NULL);
} }
nghttp2_hd_deflate_free(&deflater); nghttp2_hd_deflate_free(&deflater);
} }
@ -329,7 +330,7 @@ void test_nghttp2_frame_pack_push_promise() {
nghttp2_hd_deflate_init(&deflater, mem); nghttp2_hd_deflate_init(&deflater, mem);
nghttp2_hd_inflate_init(&inflater, mem); nghttp2_hd_inflate_init(&inflater, mem);
nva = headers(); nva = headers(mem);
nvlen = HEADERS_LENGTH; nvlen = HEADERS_LENGTH;
nghttp2_frame_push_promise_init(&frame, NGHTTP2_FLAG_END_HEADERS, 1000000007, nghttp2_frame_push_promise_init(&frame, NGHTTP2_FLAG_END_HEADERS, 1000000007,
(1U << 31) - 1, nva, nvlen); (1U << 31) - 1, nva, nvlen);
@ -346,13 +347,13 @@ void test_nghttp2_frame_pack_push_promise() {
hdblocklen = nghttp2_bufs_len(&bufs) - NGHTTP2_FRAME_HDLEN - 4; hdblocklen = nghttp2_bufs_len(&bufs) - NGHTTP2_FRAME_HDLEN - 4;
CU_ASSERT(hdblocklen == CU_ASSERT(hdblocklen ==
inflate_hd(&inflater, &out, &bufs, NGHTTP2_FRAME_HDLEN + 4)); inflate_hd(&inflater, &out, &bufs, NGHTTP2_FRAME_HDLEN + 4, mem));
CU_ASSERT(7 == out.nvlen); CU_ASSERT(7 == out.nvlen);
CU_ASSERT(nvnameeq("method", &out.nva[0])); CU_ASSERT(nvnameeq("method", &out.nva[0]));
CU_ASSERT(nvvalueeq("GET", &out.nva[0])); CU_ASSERT(nvvalueeq("GET", &out.nva[0]));
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
nghttp2_frame_push_promise_free(&oframe, mem); nghttp2_frame_push_promise_free(&oframe, mem);
nghttp2_frame_push_promise_free(&frame, mem); nghttp2_frame_push_promise_free(&frame, mem);
@ -387,13 +388,14 @@ void test_nghttp2_frame_pack_goaway() {
nghttp2_goaway frame, oframe; nghttp2_goaway frame, oframe;
nghttp2_bufs bufs; nghttp2_bufs bufs;
size_t opaque_data_len = 16; size_t opaque_data_len = 16;
uint8_t *opaque_data = malloc(opaque_data_len); uint8_t *opaque_data;
int rv; int rv;
nghttp2_mem *mem; nghttp2_mem *mem;
mem = nghttp2_mem_default(); mem = nghttp2_mem_default();
frame_pack_bufs_init(&bufs); frame_pack_bufs_init(&bufs);
opaque_data = mem->malloc(opaque_data_len, NULL);
memcpy(opaque_data, "0123456789abcdef", opaque_data_len); memcpy(opaque_data, "0123456789abcdef", opaque_data_len);
nghttp2_frame_goaway_init(&frame, 1000000007, NGHTTP2_PROTOCOL_ERROR, nghttp2_frame_goaway_init(&frame, 1000000007, NGHTTP2_PROTOCOL_ERROR,
opaque_data, opaque_data_len); opaque_data, opaque_data_len);
@ -465,7 +467,7 @@ void test_nghttp2_nv_array_copy(void) {
bignv.name = (uint8_t *)"echo"; bignv.name = (uint8_t *)"echo";
bignv.namelen = strlen("echo"); bignv.namelen = strlen("echo");
bignv.valuelen = (1 << 14) - 1; bignv.valuelen = (1 << 14) - 1;
bignv.value = malloc(bignv.valuelen); bignv.value = mem->malloc(bignv.valuelen, NULL);
memset(bignv.value, '0', bignv.valuelen); memset(bignv.value, '0', bignv.valuelen);
rv = nghttp2_nv_array_copy(&nva, NULL, 0, mem); rv = nghttp2_nv_array_copy(&nva, NULL, 0, mem);
@ -500,7 +502,7 @@ void test_nghttp2_nv_array_copy(void) {
nghttp2_nv_array_del(nva, mem); nghttp2_nv_array_del(nva, mem);
free(bignv.value); mem->free(bignv.value, NULL);
} }
void test_nghttp2_iv_check(void) { void test_nghttp2_iv_check(void) {

View File

@ -66,12 +66,12 @@ void test_nghttp2_hd_deflate(void) {
CU_ASSERT(0 == rv); CU_ASSERT(0 == rv);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(3 == out.nvlen); CU_ASSERT(3 == out.nvlen);
assert_nv_equal(nva1, out.nva, 3); assert_nv_equal(nva1, out.nva, 3, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* Second headers */ /* Second headers */
@ -80,12 +80,12 @@ void test_nghttp2_hd_deflate(void) {
CU_ASSERT(0 == rv); CU_ASSERT(0 == rv);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(2 == out.nvlen); CU_ASSERT(2 == out.nvlen);
assert_nv_equal(nva2, out.nva, 2); assert_nv_equal(nva2, out.nva, 2, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* Third headers, including same header field name, but value is not /* Third headers, including same header field name, but value is not
@ -95,12 +95,12 @@ void test_nghttp2_hd_deflate(void) {
CU_ASSERT(0 == rv); CU_ASSERT(0 == rv);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(3 == out.nvlen); CU_ASSERT(3 == out.nvlen);
assert_nv_equal(nva3, out.nva, 3); assert_nv_equal(nva3, out.nva, 3, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* Fourth headers, including duplicate header fields. */ /* Fourth headers, including duplicate header fields. */
@ -109,12 +109,12 @@ void test_nghttp2_hd_deflate(void) {
CU_ASSERT(0 == rv); CU_ASSERT(0 == rv);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(3 == out.nvlen); CU_ASSERT(3 == out.nvlen);
assert_nv_equal(nva4, out.nva, 3); assert_nv_equal(nva4, out.nva, 3, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* Fifth headers includes empty value */ /* Fifth headers includes empty value */
@ -123,12 +123,12 @@ void test_nghttp2_hd_deflate(void) {
CU_ASSERT(0 == rv); CU_ASSERT(0 == rv);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(2 == out.nvlen); CU_ASSERT(2 == out.nvlen);
assert_nv_equal(nva5, out.nva, 2); assert_nv_equal(nva5, out.nva, 2, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* Cleanup */ /* Cleanup */
@ -162,12 +162,12 @@ void test_nghttp2_hd_deflate_same_indexed_repr(void) {
CU_ASSERT(0 == rv); CU_ASSERT(0 == rv);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(2 == out.nvlen); CU_ASSERT(2 == out.nvlen);
assert_nv_equal(nva1, out.nva, 2); assert_nv_equal(nva1, out.nva, 2, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* Encode 3 same headers. This time, emits 3 index reprs. */ /* Encode 3 same headers. This time, emits 3 index reprs. */
@ -176,12 +176,12 @@ void test_nghttp2_hd_deflate_same_indexed_repr(void) {
CU_ASSERT(0 == rv); CU_ASSERT(0 == rv);
CU_ASSERT(blocklen == 3); CU_ASSERT(blocklen == 3);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(3 == out.nvlen); CU_ASSERT(3 == out.nvlen);
assert_nv_equal(nva2, out.nva, 3); assert_nv_equal(nva2, out.nva, 3, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* Cleanup */ /* Cleanup */
@ -209,13 +209,13 @@ void test_nghttp2_hd_inflate_indexed(void) {
blocklen = nghttp2_bufs_len(&bufs); blocklen = nghttp2_bufs_len(&bufs);
CU_ASSERT(1 == blocklen); CU_ASSERT(1 == blocklen);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(1 == out.nvlen); CU_ASSERT(1 == out.nvlen);
assert_nv_equal(&nv, out.nva, 1); assert_nv_equal(&nv, out.nva, 1, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* index = 0 is error */ /* index = 0 is error */
@ -224,7 +224,8 @@ void test_nghttp2_hd_inflate_indexed(void) {
blocklen = nghttp2_bufs_len(&bufs); blocklen = nghttp2_bufs_len(&bufs);
CU_ASSERT(1 == blocklen); CU_ASSERT(1 == blocklen);
CU_ASSERT(NGHTTP2_ERR_HEADER_COMP == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(NGHTTP2_ERR_HEADER_COMP ==
inflate_hd(&inflater, &out, &bufs, 0, mem));
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
@ -254,13 +255,13 @@ void test_nghttp2_hd_inflate_indname_noinc(void) {
blocklen = nghttp2_bufs_len(&bufs); blocklen = nghttp2_bufs_len(&bufs);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(1 == out.nvlen); CU_ASSERT(1 == out.nvlen);
assert_nv_equal(&nv[i], out.nva, 1); assert_nv_equal(&nv[i], out.nva, 1, mem);
CU_ASSERT(0 == inflater.ctx.hd_table.len); CU_ASSERT(0 == inflater.ctx.hd_table.len);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
} }
@ -287,17 +288,17 @@ void test_nghttp2_hd_inflate_indname_inc(void) {
blocklen = nghttp2_bufs_len(&bufs); blocklen = nghttp2_bufs_len(&bufs);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(1 == out.nvlen); CU_ASSERT(1 == out.nvlen);
assert_nv_equal(&nv, out.nva, 1); assert_nv_equal(&nv, out.nva, 1, mem);
CU_ASSERT(1 == inflater.ctx.hd_table.len); CU_ASSERT(1 == inflater.ctx.hd_table.len);
assert_nv_equal( assert_nv_equal(
&nv, &GET_TABLE_ENT(&inflater.ctx, NGHTTP2_STATIC_TABLE_LENGTH + &nv, &GET_TABLE_ENT(&inflater.ctx, NGHTTP2_STATIC_TABLE_LENGTH +
inflater.ctx.hd_table.len - 1)->nv, inflater.ctx.hd_table.len - 1)->nv,
1); 1, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
} }
@ -332,14 +333,14 @@ void test_nghttp2_hd_inflate_indname_inc_eviction(void) {
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(4 == out.nvlen); CU_ASSERT(4 == out.nvlen);
CU_ASSERT(14 == out.nva[0].namelen); CU_ASSERT(14 == out.nva[0].namelen);
CU_ASSERT(0 == memcmp("accept-charset", out.nva[0].name, out.nva[0].namelen)); CU_ASSERT(0 == memcmp("accept-charset", out.nva[0].name, out.nva[0].namelen));
CU_ASSERT(sizeof(value) == out.nva[0].valuelen); CU_ASSERT(sizeof(value) == out.nva[0].valuelen);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
CU_ASSERT(3 == inflater.ctx.hd_table.len); CU_ASSERT(3 == inflater.ctx.hd_table.len);
@ -375,13 +376,13 @@ void test_nghttp2_hd_inflate_newname_noinc(void) {
blocklen = nghttp2_bufs_len(&bufs); blocklen = nghttp2_bufs_len(&bufs);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(1 == out.nvlen); CU_ASSERT(1 == out.nvlen);
assert_nv_equal(&nv[i], out.nva, 1); assert_nv_equal(&nv[i], out.nva, 1, mem);
CU_ASSERT(0 == inflater.ctx.hd_table.len); CU_ASSERT(0 == inflater.ctx.hd_table.len);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
} }
@ -408,17 +409,17 @@ void test_nghttp2_hd_inflate_newname_inc(void) {
blocklen = nghttp2_bufs_len(&bufs); blocklen = nghttp2_bufs_len(&bufs);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(1 == out.nvlen); CU_ASSERT(1 == out.nvlen);
assert_nv_equal(&nv, out.nva, 1); assert_nv_equal(&nv, out.nva, 1, mem);
CU_ASSERT(1 == inflater.ctx.hd_table.len); CU_ASSERT(1 == inflater.ctx.hd_table.len);
assert_nv_equal( assert_nv_equal(
&nv, &GET_TABLE_ENT(&inflater.ctx, NGHTTP2_STATIC_TABLE_LENGTH + &nv, &GET_TABLE_ENT(&inflater.ctx, NGHTTP2_STATIC_TABLE_LENGTH +
inflater.ctx.hd_table.len - 1)->nv, inflater.ctx.hd_table.len - 1)->nv,
1); 1, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
} }
@ -452,22 +453,22 @@ void test_nghttp2_hd_inflate_clearall_inc(void) {
blocklen = nghttp2_bufs_len(&bufs); blocklen = nghttp2_bufs_len(&bufs);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(1 == out.nvlen); CU_ASSERT(1 == out.nvlen);
assert_nv_equal(&nv, out.nva, 1); assert_nv_equal(&nv, out.nva, 1, mem);
CU_ASSERT(0 == inflater.ctx.hd_table.len); CU_ASSERT(0 == inflater.ctx.hd_table.len);
nva_out_reset(&out); nva_out_reset(&out, mem);
/* Do it again */ /* Do it again */
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(1 == out.nvlen); CU_ASSERT(1 == out.nvlen);
assert_nv_equal(&nv, out.nva, 1); assert_nv_equal(&nv, out.nva, 1, mem);
CU_ASSERT(0 == inflater.ctx.hd_table.len); CU_ASSERT(0 == inflater.ctx.hd_table.len);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* This time, 4096 bytes space required, which is just fits in the /* This time, 4096 bytes space required, which is just fits in the
@ -479,13 +480,13 @@ void test_nghttp2_hd_inflate_clearall_inc(void) {
blocklen = nghttp2_bufs_len(&bufs); blocklen = nghttp2_bufs_len(&bufs);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(1 == out.nvlen); CU_ASSERT(1 == out.nvlen);
assert_nv_equal(&nv, out.nva, 1); assert_nv_equal(&nv, out.nva, 1, mem);
CU_ASSERT(1 == inflater.ctx.hd_table.len); CU_ASSERT(1 == inflater.ctx.hd_table.len);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
@ -514,7 +515,7 @@ void test_nghttp2_hd_inflate_zero_length_huffman(void) {
/* ptr[3] = 0x80; */ /* ptr[3] = 0x80; */
nghttp2_hd_inflate_init(&inflater, mem); nghttp2_hd_inflate_init(&inflater, mem);
CU_ASSERT(4 == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(4 == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(1 == out.nvlen); CU_ASSERT(1 == out.nvlen);
CU_ASSERT(1 == out.nva[0].namelen); CU_ASSERT(1 == out.nva[0].namelen);
@ -522,7 +523,7 @@ void test_nghttp2_hd_inflate_zero_length_huffman(void) {
CU_ASSERT(NULL == out.nva[0].value); CU_ASSERT(NULL == out.nva[0].value);
CU_ASSERT(0 == out.nva[0].valuelen); CU_ASSERT(0 == out.nva[0].valuelen);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
} }
@ -546,7 +547,7 @@ void test_nghttp2_hd_ringbuf_reserve(void) {
nv.name = (uint8_t *)"a"; nv.name = (uint8_t *)"a";
nv.namelen = strlen((const char *)nv.name); nv.namelen = strlen((const char *)nv.name);
nv.valuelen = 4; nv.valuelen = 4;
nv.value = malloc(nv.valuelen); nv.value = mem->malloc(nv.valuelen, NULL);
memset(nv.value, 0, nv.valuelen); memset(nv.value, 0, nv.valuelen);
nghttp2_hd_deflate_init2(&deflater, 8000, mem); nghttp2_hd_deflate_init2(&deflater, 8000, mem);
@ -563,12 +564,12 @@ void test_nghttp2_hd_ringbuf_reserve(void) {
CU_ASSERT(0 == rv); CU_ASSERT(0 == rv);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(1 == out.nvlen); CU_ASSERT(1 == out.nvlen);
assert_nv_equal(&nv, out.nva, 1); assert_nv_equal(&nv, out.nva, 1, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
} }
@ -576,7 +577,7 @@ void test_nghttp2_hd_ringbuf_reserve(void) {
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
nghttp2_hd_deflate_free(&deflater); nghttp2_hd_deflate_free(&deflater);
free(nv.value); mem->free(nv.value, NULL);
} }
void test_nghttp2_hd_change_table_size(void) { void test_nghttp2_hd_change_table_size(void) {
@ -616,12 +617,12 @@ void test_nghttp2_hd_change_table_size(void) {
CU_ASSERT(2 == deflater.ctx.hd_table.len); CU_ASSERT(2 == deflater.ctx.hd_table.len);
CU_ASSERT(4096 == deflater.ctx.hd_table_bufsize_max); CU_ASSERT(4096 == deflater.ctx.hd_table_bufsize_max);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(2 == inflater.ctx.hd_table.len); CU_ASSERT(2 == inflater.ctx.hd_table.len);
CU_ASSERT(4096 == inflater.ctx.hd_table_bufsize_max); CU_ASSERT(4096 == inflater.ctx.hd_table_bufsize_max);
CU_ASSERT(8000 == inflater.settings_hd_table_bufsize_max); CU_ASSERT(8000 == inflater.settings_hd_table_bufsize_max);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* inflater changes header table size to 1024 */ /* inflater changes header table size to 1024 */
@ -641,12 +642,12 @@ void test_nghttp2_hd_change_table_size(void) {
CU_ASSERT(2 == deflater.ctx.hd_table.len); CU_ASSERT(2 == deflater.ctx.hd_table.len);
CU_ASSERT(1024 == deflater.ctx.hd_table_bufsize_max); CU_ASSERT(1024 == deflater.ctx.hd_table_bufsize_max);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(2 == inflater.ctx.hd_table.len); CU_ASSERT(2 == inflater.ctx.hd_table.len);
CU_ASSERT(1024 == inflater.ctx.hd_table_bufsize_max); CU_ASSERT(1024 == inflater.ctx.hd_table_bufsize_max);
CU_ASSERT(1024 == inflater.settings_hd_table_bufsize_max); CU_ASSERT(1024 == inflater.settings_hd_table_bufsize_max);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* inflater changes header table size to 0 */ /* inflater changes header table size to 0 */
@ -668,12 +669,12 @@ void test_nghttp2_hd_change_table_size(void) {
CU_ASSERT(0 == deflater.ctx.hd_table.len); CU_ASSERT(0 == deflater.ctx.hd_table.len);
CU_ASSERT(0 == deflater.ctx.hd_table_bufsize_max); CU_ASSERT(0 == deflater.ctx.hd_table_bufsize_max);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(0 == inflater.ctx.hd_table.len); CU_ASSERT(0 == inflater.ctx.hd_table.len);
CU_ASSERT(0 == inflater.ctx.hd_table_bufsize_max); CU_ASSERT(0 == inflater.ctx.hd_table_bufsize_max);
CU_ASSERT(0 == inflater.settings_hd_table_bufsize_max); CU_ASSERT(0 == inflater.settings_hd_table_bufsize_max);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
@ -703,12 +704,12 @@ void test_nghttp2_hd_change_table_size(void) {
CU_ASSERT(2 == deflater.ctx.hd_table.len); CU_ASSERT(2 == deflater.ctx.hd_table.len);
CU_ASSERT(8000 == deflater.ctx.hd_table_bufsize_max); CU_ASSERT(8000 == deflater.ctx.hd_table_bufsize_max);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(2 == inflater.ctx.hd_table.len); CU_ASSERT(2 == inflater.ctx.hd_table.len);
CU_ASSERT(8000 == inflater.ctx.hd_table_bufsize_max); CU_ASSERT(8000 == inflater.ctx.hd_table_bufsize_max);
CU_ASSERT(8000 == inflater.settings_hd_table_bufsize_max); CU_ASSERT(8000 == inflater.settings_hd_table_bufsize_max);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
CU_ASSERT(0 == nghttp2_hd_inflate_change_table_size(&inflater, 16383)); CU_ASSERT(0 == nghttp2_hd_inflate_change_table_size(&inflater, 16383));
@ -727,21 +728,22 @@ void test_nghttp2_hd_change_table_size(void) {
CU_ASSERT(2 == deflater.ctx.hd_table.len); CU_ASSERT(2 == deflater.ctx.hd_table.len);
CU_ASSERT(8192 == deflater.ctx.hd_table_bufsize_max); CU_ASSERT(8192 == deflater.ctx.hd_table_bufsize_max);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(2 == inflater.ctx.hd_table.len); CU_ASSERT(2 == inflater.ctx.hd_table.len);
CU_ASSERT(8192 == inflater.ctx.hd_table_bufsize_max); CU_ASSERT(8192 == inflater.ctx.hd_table_bufsize_max);
CU_ASSERT(16383 == inflater.settings_hd_table_bufsize_max); CU_ASSERT(16383 == inflater.settings_hd_table_bufsize_max);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
/* Lastly, check the error condition */ /* Lastly, check the error condition */
rv = nghttp2_hd_emit_table_size(&bufs, 25600); rv = nghttp2_hd_emit_table_size(&bufs, 25600);
CU_ASSERT(rv == 0); CU_ASSERT(rv == 0);
CU_ASSERT(NGHTTP2_ERR_HEADER_COMP == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(NGHTTP2_ERR_HEADER_COMP ==
inflate_hd(&inflater, &out, &bufs, 0, mem));
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
@ -763,12 +765,12 @@ void test_nghttp2_hd_change_table_size(void) {
CU_ASSERT(2 == deflater.ctx.hd_table.len); CU_ASSERT(2 == deflater.ctx.hd_table.len);
CU_ASSERT(1024 == deflater.ctx.hd_table_bufsize_max); CU_ASSERT(1024 == deflater.ctx.hd_table_bufsize_max);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(2 == inflater.ctx.hd_table.len); CU_ASSERT(2 == inflater.ctx.hd_table.len);
CU_ASSERT(1024 == inflater.ctx.hd_table_bufsize_max); CU_ASSERT(1024 == inflater.ctx.hd_table_bufsize_max);
CU_ASSERT(4096 == inflater.settings_hd_table_bufsize_max); CU_ASSERT(4096 == inflater.settings_hd_table_bufsize_max);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
@ -787,11 +789,11 @@ void test_nghttp2_hd_change_table_size(void) {
CU_ASSERT(0 == rv); CU_ASSERT(0 == rv);
CU_ASSERT(UINT32_MAX == deflater.ctx.hd_table_bufsize_max); CU_ASSERT(UINT32_MAX == deflater.ctx.hd_table_bufsize_max);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(UINT32_MAX == inflater.ctx.hd_table_bufsize_max); CU_ASSERT(UINT32_MAX == inflater.ctx.hd_table_bufsize_max);
CU_ASSERT(UINT32_MAX == inflater.settings_hd_table_bufsize_max); CU_ASSERT(UINT32_MAX == inflater.settings_hd_table_bufsize_max);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
@ -817,11 +819,11 @@ void test_nghttp2_hd_change_table_size(void) {
CU_ASSERT(3000 == deflater.ctx.hd_table_bufsize_max); CU_ASSERT(3000 == deflater.ctx.hd_table_bufsize_max);
CU_ASSERT(UINT32_MAX == deflater.min_hd_table_bufsize_max); CU_ASSERT(UINT32_MAX == deflater.min_hd_table_bufsize_max);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(3000 == inflater.ctx.hd_table_bufsize_max); CU_ASSERT(3000 == inflater.ctx.hd_table_bufsize_max);
CU_ASSERT(3000 == inflater.settings_hd_table_bufsize_max); CU_ASSERT(3000 == inflater.settings_hd_table_bufsize_max);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_reset(&bufs); nghttp2_bufs_reset(&bufs);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
@ -832,7 +834,8 @@ void test_nghttp2_hd_change_table_size(void) {
static void check_deflate_inflate(nghttp2_hd_deflater *deflater, static void check_deflate_inflate(nghttp2_hd_deflater *deflater,
nghttp2_hd_inflater *inflater, nghttp2_hd_inflater *inflater,
nghttp2_nv *nva, size_t nvlen) { nghttp2_nv *nva, size_t nvlen,
nghttp2_mem *mem) {
nghttp2_bufs bufs; nghttp2_bufs bufs;
ssize_t blocklen; ssize_t blocklen;
nva_out out; nva_out out;
@ -847,12 +850,12 @@ static void check_deflate_inflate(nghttp2_hd_deflater *deflater,
CU_ASSERT(0 == rv); CU_ASSERT(0 == rv);
CU_ASSERT(blocklen >= 0); CU_ASSERT(blocklen >= 0);
CU_ASSERT(blocklen == inflate_hd(inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(inflater, &out, &bufs, 0, mem));
CU_ASSERT(nvlen == out.nvlen); CU_ASSERT(nvlen == out.nvlen);
assert_nv_equal(nva, out.nva, nvlen); assert_nv_equal(nva, out.nva, nvlen, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
} }
@ -999,16 +1002,16 @@ void test_nghttp2_hd_deflate_inflate(void) {
nghttp2_hd_deflate_init(&deflater, mem); nghttp2_hd_deflate_init(&deflater, mem);
nghttp2_hd_inflate_init(&inflater, mem); nghttp2_hd_inflate_init(&inflater, mem);
check_deflate_inflate(&deflater, &inflater, nv1, ARRLEN(nv1)); check_deflate_inflate(&deflater, &inflater, nv1, ARRLEN(nv1), mem);
check_deflate_inflate(&deflater, &inflater, nv2, ARRLEN(nv2)); check_deflate_inflate(&deflater, &inflater, nv2, ARRLEN(nv2), mem);
check_deflate_inflate(&deflater, &inflater, nv3, ARRLEN(nv3)); check_deflate_inflate(&deflater, &inflater, nv3, ARRLEN(nv3), mem);
check_deflate_inflate(&deflater, &inflater, nv4, ARRLEN(nv4)); check_deflate_inflate(&deflater, &inflater, nv4, ARRLEN(nv4), mem);
check_deflate_inflate(&deflater, &inflater, nv5, ARRLEN(nv5)); check_deflate_inflate(&deflater, &inflater, nv5, ARRLEN(nv5), mem);
check_deflate_inflate(&deflater, &inflater, nv6, ARRLEN(nv6)); check_deflate_inflate(&deflater, &inflater, nv6, ARRLEN(nv6), mem);
check_deflate_inflate(&deflater, &inflater, nv7, ARRLEN(nv7)); check_deflate_inflate(&deflater, &inflater, nv7, ARRLEN(nv7), mem);
check_deflate_inflate(&deflater, &inflater, nv8, ARRLEN(nv8)); check_deflate_inflate(&deflater, &inflater, nv8, ARRLEN(nv8), mem);
check_deflate_inflate(&deflater, &inflater, nv9, ARRLEN(nv9)); check_deflate_inflate(&deflater, &inflater, nv9, ARRLEN(nv9), mem);
check_deflate_inflate(&deflater, &inflater, nv10, ARRLEN(nv10)); check_deflate_inflate(&deflater, &inflater, nv10, ARRLEN(nv10), mem);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
nghttp2_hd_deflate_free(&deflater); nghttp2_hd_deflate_free(&deflater);
@ -1048,17 +1051,17 @@ void test_nghttp2_hd_no_index(void) {
CU_ASSERT(0 == rv); CU_ASSERT(0 == rv);
CU_ASSERT(blocklen > 0); CU_ASSERT(blocklen > 0);
CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(&inflater, &out, &bufs, 0, mem));
CU_ASSERT(ARRLEN(nva) == out.nvlen); CU_ASSERT(ARRLEN(nva) == out.nvlen);
assert_nv_equal(nva, out.nva, ARRLEN(nva)); assert_nv_equal(nva, out.nva, ARRLEN(nva), mem);
CU_ASSERT(out.nva[0].flags == NGHTTP2_NV_FLAG_NONE); CU_ASSERT(out.nva[0].flags == NGHTTP2_NV_FLAG_NONE);
for (i = 1; i < ARRLEN(nva); ++i) { for (i = 1; i < ARRLEN(nva); ++i) {
CU_ASSERT(out.nva[i].flags == NGHTTP2_NV_FLAG_NO_INDEX); CU_ASSERT(out.nva[i].flags == NGHTTP2_NV_FLAG_NO_INDEX);
} }
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
@ -1119,7 +1122,7 @@ void test_nghttp2_hd_public_api(void) {
nghttp2_bufs_wrap_init(&bufs, buf, blocklen, mem); nghttp2_bufs_wrap_init(&bufs, buf, blocklen, mem);
bufs.head->buf.last += blocklen; bufs.head->buf.last += blocklen;
CU_ASSERT(blocklen == inflate_hd(inflater, NULL, &bufs, 0)); CU_ASSERT(blocklen == inflate_hd(inflater, NULL, &bufs, 0, mem));
nghttp2_bufs_wrap_free(&bufs); nghttp2_bufs_wrap_free(&bufs);

View File

@ -145,15 +145,19 @@ void test_nghttp2_map_functional(void) {
nghttp2_map_free(&map); nghttp2_map_free(&map);
} }
static int entry_free(nghttp2_map_entry *entry, void *ptr _U_) { static int entry_free(nghttp2_map_entry *entry, void *ptr) {
free(entry); nghttp2_mem *mem = ptr;
mem->free(entry, NULL);
return 0; return 0;
} }
void test_nghttp2_map_each_free(void) { void test_nghttp2_map_each_free(void) {
strentry *foo = malloc(sizeof(strentry)), *bar = malloc(sizeof(strentry)), nghttp2_mem *mem = nghttp2_mem_default();
*baz = malloc(sizeof(strentry)), strentry *foo = mem->malloc(sizeof(strentry), NULL),
*shrubbery = malloc(sizeof(strentry)); *bar = mem->malloc(sizeof(strentry), NULL),
*baz = mem->malloc(sizeof(strentry), NULL),
*shrubbery = mem->malloc(sizeof(strentry), NULL);
nghttp2_map map; nghttp2_map map;
nghttp2_map_init(&map, nghttp2_mem_default()); nghttp2_map_init(&map, nghttp2_mem_default());
@ -167,6 +171,6 @@ void test_nghttp2_map_each_free(void) {
nghttp2_map_insert(&map, &baz->map_entry); nghttp2_map_insert(&map, &baz->map_entry);
nghttp2_map_insert(&map, &shrubbery->map_entry); nghttp2_map_insert(&map, &shrubbery->map_entry);
nghttp2_map_each_free(&map, entry_free, NULL); nghttp2_map_each_free(&map, entry_free, mem);
nghttp2_map_free(&map); nghttp2_map_free(&map);
} }

View File

@ -1560,7 +1560,7 @@ void test_nghttp2_session_add_frame(void) {
CU_ASSERT(0 == nghttp2_session_client_new(&session, &callbacks, &user_data)); CU_ASSERT(0 == nghttp2_session_client_new(&session, &callbacks, &user_data));
item = malloc(sizeof(nghttp2_outbound_item)); item = mem->malloc(sizeof(nghttp2_outbound_item), NULL);
nghttp2_session_outbound_item_init(session, item); nghttp2_session_outbound_item_init(session, item);
@ -2474,6 +2474,10 @@ void test_nghttp2_session_on_window_update_received(void) {
nghttp2_frame frame; nghttp2_frame frame;
nghttp2_stream *stream; nghttp2_stream *stream;
nghttp2_outbound_item *data_item; nghttp2_outbound_item *data_item;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(nghttp2_session_callbacks)); memset(&callbacks, 0, sizeof(nghttp2_session_callbacks));
callbacks.on_frame_recv_callback = on_frame_recv_callback; callbacks.on_frame_recv_callback = on_frame_recv_callback;
callbacks.on_invalid_frame_recv_callback = on_invalid_frame_recv_callback; callbacks.on_invalid_frame_recv_callback = on_invalid_frame_recv_callback;
@ -2486,7 +2490,7 @@ void test_nghttp2_session_on_window_update_received(void) {
&pri_spec_default, NGHTTP2_STREAM_OPENED, &pri_spec_default, NGHTTP2_STREAM_OPENED,
NULL); NULL);
data_item = create_data_ob_item(); data_item = create_data_ob_item(mem);
CU_ASSERT(0 == nghttp2_stream_attach_item(stream, data_item, session)); CU_ASSERT(0 == nghttp2_stream_attach_item(stream, data_item, session));
@ -2604,13 +2608,16 @@ void test_nghttp2_session_send_headers_start_stream(void) {
nghttp2_outbound_item *item; nghttp2_outbound_item *item;
nghttp2_frame *frame; nghttp2_frame *frame;
nghttp2_stream *stream; nghttp2_stream *stream;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(nghttp2_session_callbacks)); memset(&callbacks, 0, sizeof(nghttp2_session_callbacks));
callbacks.send_callback = null_send_callback; callbacks.send_callback = null_send_callback;
nghttp2_session_client_new(&session, &callbacks, NULL); nghttp2_session_client_new(&session, &callbacks, NULL);
item = malloc(sizeof(nghttp2_outbound_item)); item = mem->malloc(sizeof(nghttp2_outbound_item), NULL);
nghttp2_session_outbound_item_init(session, item); nghttp2_session_outbound_item_init(session, item);
@ -2635,6 +2642,9 @@ void test_nghttp2_session_send_headers_reply(void) {
nghttp2_outbound_item *item; nghttp2_outbound_item *item;
nghttp2_frame *frame; nghttp2_frame *frame;
nghttp2_stream *stream; nghttp2_stream *stream;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(nghttp2_session_callbacks)); memset(&callbacks, 0, sizeof(nghttp2_session_callbacks));
callbacks.send_callback = null_send_callback; callbacks.send_callback = null_send_callback;
@ -2643,7 +2653,7 @@ void test_nghttp2_session_send_headers_reply(void) {
nghttp2_session_open_stream(session, 2, NGHTTP2_STREAM_FLAG_NONE, nghttp2_session_open_stream(session, 2, NGHTTP2_STREAM_FLAG_NONE,
&pri_spec_default, NGHTTP2_STREAM_OPENING, NULL); &pri_spec_default, NGHTTP2_STREAM_OPENING, NULL);
item = malloc(sizeof(nghttp2_outbound_item)); item = mem->malloc(sizeof(nghttp2_outbound_item), NULL);
nghttp2_session_outbound_item_init(session, item); nghttp2_session_outbound_item_init(session, item);
@ -2678,7 +2688,7 @@ void test_nghttp2_session_send_headers_frame_size_error(void) {
for (i = 0; i < nnv; ++i) { for (i = 0; i < nnv; ++i) {
nv[i].name = (uint8_t *)"header"; nv[i].name = (uint8_t *)"header";
nv[i].namelen = strlen((const char *)nv[i].name); nv[i].namelen = strlen((const char *)nv[i].name);
nv[i].value = malloc(vallen + 1); nv[i].value = mem->malloc(vallen + 1, NULL);
memset(nv[i].value, '0' + (int)i, vallen); memset(nv[i].value, '0' + (int)i, vallen);
nv[i].value[vallen] = '\0'; nv[i].value[vallen] = '\0';
nv[i].valuelen = vallen; nv[i].valuelen = vallen;
@ -2693,7 +2703,7 @@ void test_nghttp2_session_send_headers_frame_size_error(void) {
nvlen = nnv; nvlen = nnv;
nghttp2_nv_array_copy(&nva, nv, nvlen, mem); nghttp2_nv_array_copy(&nva, nv, nvlen, mem);
item = malloc(sizeof(nghttp2_outbound_item)); item = mem->malloc(sizeof(nghttp2_outbound_item), NULL);
nghttp2_session_outbound_item_init(session, item); nghttp2_session_outbound_item_init(session, item);
@ -2716,7 +2726,7 @@ void test_nghttp2_session_send_headers_frame_size_error(void) {
CU_ASSERT(NGHTTP2_ERR_FRAME_SIZE_ERROR == ud.not_sent_error); CU_ASSERT(NGHTTP2_ERR_FRAME_SIZE_ERROR == ud.not_sent_error);
for (i = 0; i < nnv; ++i) { for (i = 0; i < nnv; ++i) {
free(nv[i].value); mem->free(nv[i].value, NULL);
} }
nghttp2_session_del(session); nghttp2_session_del(session);
} }
@ -2727,6 +2737,9 @@ void test_nghttp2_session_send_headers_push_reply(void) {
nghttp2_outbound_item *item; nghttp2_outbound_item *item;
nghttp2_frame *frame; nghttp2_frame *frame;
nghttp2_stream *stream; nghttp2_stream *stream;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(nghttp2_session_callbacks)); memset(&callbacks, 0, sizeof(nghttp2_session_callbacks));
callbacks.send_callback = null_send_callback; callbacks.send_callback = null_send_callback;
@ -2735,7 +2748,7 @@ void test_nghttp2_session_send_headers_push_reply(void) {
nghttp2_session_open_stream(session, 2, NGHTTP2_STREAM_FLAG_NONE, nghttp2_session_open_stream(session, 2, NGHTTP2_STREAM_FLAG_NONE,
&pri_spec_default, NGHTTP2_STREAM_RESERVED, NULL); &pri_spec_default, NGHTTP2_STREAM_RESERVED, NULL);
item = malloc(sizeof(nghttp2_outbound_item)); item = mem->malloc(sizeof(nghttp2_outbound_item), NULL);
nghttp2_session_outbound_item_init(session, item); nghttp2_session_outbound_item_init(session, item);
@ -2759,6 +2772,9 @@ void test_nghttp2_session_send_rst_stream(void) {
my_user_data user_data; my_user_data user_data;
nghttp2_outbound_item *item; nghttp2_outbound_item *item;
nghttp2_frame *frame; nghttp2_frame *frame;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(nghttp2_session_callbacks)); memset(&callbacks, 0, sizeof(nghttp2_session_callbacks));
callbacks.send_callback = null_send_callback; callbacks.send_callback = null_send_callback;
@ -2766,7 +2782,7 @@ void test_nghttp2_session_send_rst_stream(void) {
nghttp2_session_open_stream(session, 1, NGHTTP2_STREAM_FLAG_NONE, nghttp2_session_open_stream(session, 1, NGHTTP2_STREAM_FLAG_NONE,
&pri_spec_default, NGHTTP2_STREAM_OPENING, NULL); &pri_spec_default, NGHTTP2_STREAM_OPENING, NULL);
item = malloc(sizeof(nghttp2_outbound_item)); item = mem->malloc(sizeof(nghttp2_outbound_item), NULL);
nghttp2_session_outbound_item_init(session, item); nghttp2_session_outbound_item_init(session, item);
@ -2800,7 +2816,7 @@ void test_nghttp2_session_send_push_promise(void) {
nghttp2_session_open_stream(session, 1, NGHTTP2_STREAM_FLAG_NONE, nghttp2_session_open_stream(session, 1, NGHTTP2_STREAM_FLAG_NONE,
&pri_spec_default, NGHTTP2_STREAM_OPENING, NULL); &pri_spec_default, NGHTTP2_STREAM_OPENING, NULL);
item = malloc(sizeof(nghttp2_outbound_item)); item = mem->malloc(sizeof(nghttp2_outbound_item), NULL);
nghttp2_session_outbound_item_init(session, item); nghttp2_session_outbound_item_init(session, item);
@ -2821,14 +2837,14 @@ void test_nghttp2_session_send_push_promise(void) {
/* Received ENABLE_PUSH = 0 */ /* Received ENABLE_PUSH = 0 */
iv.settings_id = NGHTTP2_SETTINGS_ENABLE_PUSH; iv.settings_id = NGHTTP2_SETTINGS_ENABLE_PUSH;
iv.value = 0; iv.value = 0;
frame = malloc(sizeof(nghttp2_frame)); frame = mem->malloc(sizeof(nghttp2_frame), NULL);
nghttp2_frame_settings_init(&frame->settings, NGHTTP2_FLAG_NONE, nghttp2_frame_settings_init(&frame->settings, NGHTTP2_FLAG_NONE,
dup_iv(&iv, 1), 1); dup_iv(&iv, 1), 1);
nghttp2_session_on_settings_received(session, frame, 1); nghttp2_session_on_settings_received(session, frame, 1);
nghttp2_frame_settings_free(&frame->settings, mem); nghttp2_frame_settings_free(&frame->settings, mem);
free(frame); mem->free(frame, NULL);
item = malloc(sizeof(nghttp2_outbound_item)); item = mem->malloc(sizeof(nghttp2_outbound_item), NULL);
nghttp2_session_outbound_item_init(session, item); nghttp2_session_outbound_item_init(session, item);
@ -2851,7 +2867,7 @@ void test_nghttp2_session_send_push_promise(void) {
nghttp2_session_client_new(&session, &callbacks, &ud); nghttp2_session_client_new(&session, &callbacks, &ud);
nghttp2_session_open_stream(session, 1, NGHTTP2_STREAM_FLAG_NONE, nghttp2_session_open_stream(session, 1, NGHTTP2_STREAM_FLAG_NONE,
&pri_spec_default, NGHTTP2_STREAM_OPENING, NULL); &pri_spec_default, NGHTTP2_STREAM_OPENING, NULL);
item = malloc(sizeof(nghttp2_outbound_item)); item = mem->malloc(sizeof(nghttp2_outbound_item), NULL);
nghttp2_session_outbound_item_init(session, item); nghttp2_session_outbound_item_init(session, item);
@ -3286,6 +3302,9 @@ void test_nghttp2_submit_request_with_data(void) {
nghttp2_data_provider data_prd; nghttp2_data_provider data_prd;
my_user_data ud; my_user_data ud;
nghttp2_outbound_item *item; nghttp2_outbound_item *item;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(nghttp2_session_callbacks)); memset(&callbacks, 0, sizeof(nghttp2_session_callbacks));
callbacks.send_callback = null_send_callback; callbacks.send_callback = null_send_callback;
@ -3297,7 +3316,8 @@ void test_nghttp2_submit_request_with_data(void) {
&data_prd, NULL)); &data_prd, NULL));
item = nghttp2_session_get_next_ob_item(session); item = nghttp2_session_get_next_ob_item(session);
CU_ASSERT(ARRLEN(reqnv) == item->frame.headers.nvlen); CU_ASSERT(ARRLEN(reqnv) == item->frame.headers.nvlen);
assert_nv_equal(reqnv, item->frame.headers.nva, item->frame.headers.nvlen); assert_nv_equal(reqnv, item->frame.headers.nva, item->frame.headers.nvlen,
mem);
CU_ASSERT(0 == nghttp2_session_send(session)); CU_ASSERT(0 == nghttp2_session_send(session));
CU_ASSERT(0 == ud.data_source_length); CU_ASSERT(0 == ud.data_source_length);
@ -3332,19 +3352,20 @@ void test_nghttp2_submit_request_without_data(void) {
&data_prd, NULL)); &data_prd, NULL));
item = nghttp2_session_get_next_ob_item(session); item = nghttp2_session_get_next_ob_item(session);
CU_ASSERT(ARRLEN(reqnv) == item->frame.headers.nvlen); CU_ASSERT(ARRLEN(reqnv) == item->frame.headers.nvlen);
assert_nv_equal(reqnv, item->frame.headers.nva, item->frame.headers.nvlen); assert_nv_equal(reqnv, item->frame.headers.nva, item->frame.headers.nvlen,
mem);
CU_ASSERT(item->frame.hd.flags & NGHTTP2_FLAG_END_STREAM); CU_ASSERT(item->frame.hd.flags & NGHTTP2_FLAG_END_STREAM);
CU_ASSERT(0 == nghttp2_session_send(session)); CU_ASSERT(0 == nghttp2_session_send(session));
CU_ASSERT(0 == unpack_frame(&frame, acc.buf, acc.length)); CU_ASSERT(0 == unpack_frame(&frame, acc.buf, acc.length));
nghttp2_bufs_add(&bufs, acc.buf, acc.length); nghttp2_bufs_add(&bufs, acc.buf, acc.length);
inflate_hd(&inflater, &out, &bufs, NGHTTP2_FRAME_HDLEN); inflate_hd(&inflater, &out, &bufs, NGHTTP2_FRAME_HDLEN, mem);
CU_ASSERT(ARRLEN(reqnv) == out.nvlen); CU_ASSERT(ARRLEN(reqnv) == out.nvlen);
assert_nv_equal(reqnv, out.nva, out.nvlen); assert_nv_equal(reqnv, out.nva, out.nvlen, mem);
nghttp2_frame_headers_free(&frame.headers, mem); nghttp2_frame_headers_free(&frame.headers, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
@ -3357,6 +3378,9 @@ void test_nghttp2_submit_response_with_data(void) {
nghttp2_data_provider data_prd; nghttp2_data_provider data_prd;
my_user_data ud; my_user_data ud;
nghttp2_outbound_item *item; nghttp2_outbound_item *item;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(nghttp2_session_callbacks)); memset(&callbacks, 0, sizeof(nghttp2_session_callbacks));
callbacks.send_callback = null_send_callback; callbacks.send_callback = null_send_callback;
@ -3370,7 +3394,8 @@ void test_nghttp2_submit_response_with_data(void) {
&data_prd)); &data_prd));
item = nghttp2_session_get_next_ob_item(session); item = nghttp2_session_get_next_ob_item(session);
CU_ASSERT(ARRLEN(resnv) == item->frame.headers.nvlen); CU_ASSERT(ARRLEN(resnv) == item->frame.headers.nvlen);
assert_nv_equal(resnv, item->frame.headers.nva, item->frame.headers.nvlen); assert_nv_equal(resnv, item->frame.headers.nva, item->frame.headers.nvlen,
mem);
CU_ASSERT(0 == nghttp2_session_send(session)); CU_ASSERT(0 == nghttp2_session_send(session));
CU_ASSERT(0 == ud.data_source_length); CU_ASSERT(0 == ud.data_source_length);
@ -3407,19 +3432,20 @@ void test_nghttp2_submit_response_without_data(void) {
&data_prd)); &data_prd));
item = nghttp2_session_get_next_ob_item(session); item = nghttp2_session_get_next_ob_item(session);
CU_ASSERT(ARRLEN(resnv) == item->frame.headers.nvlen); CU_ASSERT(ARRLEN(resnv) == item->frame.headers.nvlen);
assert_nv_equal(resnv, item->frame.headers.nva, item->frame.headers.nvlen); assert_nv_equal(resnv, item->frame.headers.nva, item->frame.headers.nvlen,
mem);
CU_ASSERT(item->frame.hd.flags & NGHTTP2_FLAG_END_STREAM); CU_ASSERT(item->frame.hd.flags & NGHTTP2_FLAG_END_STREAM);
CU_ASSERT(0 == nghttp2_session_send(session)); CU_ASSERT(0 == nghttp2_session_send(session));
CU_ASSERT(0 == unpack_frame(&frame, acc.buf, acc.length)); CU_ASSERT(0 == unpack_frame(&frame, acc.buf, acc.length));
nghttp2_bufs_add(&bufs, acc.buf, acc.length); nghttp2_bufs_add(&bufs, acc.buf, acc.length);
inflate_hd(&inflater, &out, &bufs, NGHTTP2_FRAME_HDLEN); inflate_hd(&inflater, &out, &bufs, NGHTTP2_FRAME_HDLEN, mem);
CU_ASSERT(ARRLEN(resnv) == out.nvlen); CU_ASSERT(ARRLEN(resnv) == out.nvlen);
assert_nv_equal(resnv, out.nva, out.nvlen); assert_nv_equal(resnv, out.nva, out.nvlen, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
nghttp2_frame_headers_free(&frame.headers, mem); nghttp2_frame_headers_free(&frame.headers, mem);
nghttp2_hd_inflate_free(&inflater); nghttp2_hd_inflate_free(&inflater);
@ -3430,6 +3456,9 @@ void test_nghttp2_submit_headers_start_stream(void) {
nghttp2_session *session; nghttp2_session *session;
nghttp2_session_callbacks callbacks; nghttp2_session_callbacks callbacks;
nghttp2_outbound_item *item; nghttp2_outbound_item *item;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(nghttp2_session_callbacks)); memset(&callbacks, 0, sizeof(nghttp2_session_callbacks));
CU_ASSERT(0 == nghttp2_session_client_new(&session, &callbacks, NULL)); CU_ASSERT(0 == nghttp2_session_client_new(&session, &callbacks, NULL));
@ -3437,7 +3466,8 @@ void test_nghttp2_submit_headers_start_stream(void) {
NULL, reqnv, ARRLEN(reqnv), NULL)); NULL, reqnv, ARRLEN(reqnv), NULL));
item = nghttp2_session_get_next_ob_item(session); item = nghttp2_session_get_next_ob_item(session);
CU_ASSERT(ARRLEN(reqnv) == item->frame.headers.nvlen); CU_ASSERT(ARRLEN(reqnv) == item->frame.headers.nvlen);
assert_nv_equal(reqnv, item->frame.headers.nva, item->frame.headers.nvlen); assert_nv_equal(reqnv, item->frame.headers.nva, item->frame.headers.nvlen,
mem);
CU_ASSERT((NGHTTP2_FLAG_END_HEADERS | NGHTTP2_FLAG_END_STREAM) == CU_ASSERT((NGHTTP2_FLAG_END_HEADERS | NGHTTP2_FLAG_END_STREAM) ==
item->frame.hd.flags); item->frame.hd.flags);
CU_ASSERT(0 == (item->frame.hd.flags & NGHTTP2_FLAG_PRIORITY)); CU_ASSERT(0 == (item->frame.hd.flags & NGHTTP2_FLAG_PRIORITY));
@ -3451,6 +3481,9 @@ void test_nghttp2_submit_headers_reply(void) {
my_user_data ud; my_user_data ud;
nghttp2_outbound_item *item; nghttp2_outbound_item *item;
nghttp2_stream *stream; nghttp2_stream *stream;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(nghttp2_session_callbacks)); memset(&callbacks, 0, sizeof(nghttp2_session_callbacks));
callbacks.send_callback = null_send_callback; callbacks.send_callback = null_send_callback;
@ -3461,7 +3494,8 @@ void test_nghttp2_submit_headers_reply(void) {
NULL, resnv, ARRLEN(resnv), NULL)); NULL, resnv, ARRLEN(resnv), NULL));
item = nghttp2_session_get_next_ob_item(session); item = nghttp2_session_get_next_ob_item(session);
CU_ASSERT(ARRLEN(resnv) == item->frame.headers.nvlen); CU_ASSERT(ARRLEN(resnv) == item->frame.headers.nvlen);
assert_nv_equal(resnv, item->frame.headers.nva, item->frame.headers.nvlen); assert_nv_equal(resnv, item->frame.headers.nva, item->frame.headers.nvlen,
mem);
CU_ASSERT((NGHTTP2_FLAG_END_STREAM | NGHTTP2_FLAG_END_HEADERS) == CU_ASSERT((NGHTTP2_FLAG_END_STREAM | NGHTTP2_FLAG_END_HEADERS) ==
item->frame.hd.flags); item->frame.hd.flags);
@ -3561,7 +3595,8 @@ void test_nghttp2_submit_headers(void) {
NULL, reqnv, ARRLEN(reqnv), NULL)); NULL, reqnv, ARRLEN(reqnv), NULL));
item = nghttp2_session_get_next_ob_item(session); item = nghttp2_session_get_next_ob_item(session);
CU_ASSERT(ARRLEN(reqnv) == item->frame.headers.nvlen); CU_ASSERT(ARRLEN(reqnv) == item->frame.headers.nvlen);
assert_nv_equal(reqnv, item->frame.headers.nva, item->frame.headers.nvlen); assert_nv_equal(reqnv, item->frame.headers.nva, item->frame.headers.nvlen,
mem);
CU_ASSERT((NGHTTP2_FLAG_END_STREAM | NGHTTP2_FLAG_END_HEADERS) == CU_ASSERT((NGHTTP2_FLAG_END_STREAM | NGHTTP2_FLAG_END_HEADERS) ==
item->frame.hd.flags); item->frame.hd.flags);
@ -3586,12 +3621,12 @@ void test_nghttp2_submit_headers(void) {
CU_ASSERT(0 == unpack_frame(&frame, acc.buf, acc.length)); CU_ASSERT(0 == unpack_frame(&frame, acc.buf, acc.length));
nghttp2_bufs_add(&bufs, acc.buf, acc.length); nghttp2_bufs_add(&bufs, acc.buf, acc.length);
inflate_hd(&inflater, &out, &bufs, NGHTTP2_FRAME_HDLEN); inflate_hd(&inflater, &out, &bufs, NGHTTP2_FRAME_HDLEN, mem);
CU_ASSERT(ARRLEN(reqnv) == out.nvlen); CU_ASSERT(ARRLEN(reqnv) == out.nvlen);
assert_nv_equal(reqnv, out.nva, out.nvlen); assert_nv_equal(reqnv, out.nva, out.nvlen, mem);
nva_out_reset(&out); nva_out_reset(&out, mem);
nghttp2_bufs_free(&bufs); nghttp2_bufs_free(&bufs);
nghttp2_frame_headers_free(&frame.headers, mem); nghttp2_frame_headers_free(&frame.headers, mem);
@ -4292,12 +4327,12 @@ void test_nghttp2_session_pop_next_ob_item(void) {
item = nghttp2_session_pop_next_ob_item(session); item = nghttp2_session_pop_next_ob_item(session);
CU_ASSERT(NGHTTP2_PING == item->frame.hd.type); CU_ASSERT(NGHTTP2_PING == item->frame.hd.type);
nghttp2_outbound_item_free(item, mem); nghttp2_outbound_item_free(item, mem);
free(item); mem->free(item, NULL);
item = nghttp2_session_pop_next_ob_item(session); item = nghttp2_session_pop_next_ob_item(session);
CU_ASSERT(NGHTTP2_HEADERS == item->frame.hd.type); CU_ASSERT(NGHTTP2_HEADERS == item->frame.hd.type);
nghttp2_outbound_item_free(item, mem); nghttp2_outbound_item_free(item, mem);
free(item); mem->free(item, NULL);
CU_ASSERT(NULL == nghttp2_session_pop_next_ob_item(session)); CU_ASSERT(NULL == nghttp2_session_pop_next_ob_item(session));
@ -4323,7 +4358,7 @@ void test_nghttp2_session_pop_next_ob_item(void) {
nghttp2_stream_detach_item(stream, session); nghttp2_stream_detach_item(stream, session);
nghttp2_outbound_item_free(item, mem); nghttp2_outbound_item_free(item, mem);
free(item); mem->free(item, NULL);
CU_ASSERT(NULL == nghttp2_session_pop_next_ob_item(session)); CU_ASSERT(NULL == nghttp2_session_pop_next_ob_item(session));
@ -4332,7 +4367,7 @@ void test_nghttp2_session_pop_next_ob_item(void) {
item = nghttp2_session_pop_next_ob_item(session); item = nghttp2_session_pop_next_ob_item(session);
CU_ASSERT(NGHTTP2_HEADERS == item->frame.hd.type); CU_ASSERT(NGHTTP2_HEADERS == item->frame.hd.type);
nghttp2_outbound_item_free(item, mem); nghttp2_outbound_item_free(item, mem);
free(item); mem->free(item, NULL);
nghttp2_session_del(session); nghttp2_session_del(session);
@ -5094,7 +5129,8 @@ void test_nghttp2_session_data_backoff_by_high_pri_frame(void) {
} }
static void check_session_recv_data_with_padding(nghttp2_bufs *bufs, static void check_session_recv_data_with_padding(nghttp2_bufs *bufs,
size_t datalen) { size_t datalen,
nghttp2_mem *mem) {
nghttp2_session *session; nghttp2_session *session;
my_user_data ud; my_user_data ud;
nghttp2_session_callbacks callbacks; nghttp2_session_callbacks callbacks;
@ -5119,7 +5155,7 @@ static void check_session_recv_data_with_padding(nghttp2_bufs *bufs,
CU_ASSERT(1 == ud.frame_recv_cb_called); CU_ASSERT(1 == ud.frame_recv_cb_called);
CU_ASSERT(datalen == ud.data_chunk_len); CU_ASSERT(datalen == ud.data_chunk_len);
free(in); mem->free(in, NULL);
nghttp2_session_del(session); nghttp2_session_del(session);
} }
@ -5130,6 +5166,9 @@ void test_nghttp2_session_pack_data_with_padding(void) {
nghttp2_data_provider data_prd; nghttp2_data_provider data_prd;
nghttp2_frame *frame; nghttp2_frame *frame;
size_t datalen = 55; size_t datalen = 55;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(callbacks)); memset(&callbacks, 0, sizeof(callbacks));
callbacks.send_callback = block_count_send_callback; callbacks.send_callback = block_count_send_callback;
@ -5155,7 +5194,7 @@ void test_nghttp2_session_pack_data_with_padding(void) {
CU_ASSERT(frame->hd.flags & NGHTTP2_FLAG_PADDED); CU_ASSERT(frame->hd.flags & NGHTTP2_FLAG_PADDED);
/* Check reception of this DATA frame */ /* Check reception of this DATA frame */
check_session_recv_data_with_padding(&session->aob.framebufs, datalen); check_session_recv_data_with_padding(&session->aob.framebufs, datalen, mem);
nghttp2_session_del(session); nghttp2_session_del(session);
} }
@ -5220,7 +5259,7 @@ void test_nghttp2_pack_settings_payload(void) {
CU_ASSERT(NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE == resiv[1].settings_id); CU_ASSERT(NGHTTP2_SETTINGS_INITIAL_WINDOW_SIZE == resiv[1].settings_id);
CU_ASSERT(4095 == resiv[1].value); CU_ASSERT(4095 == resiv[1].value);
free(resiv); mem->free(resiv, NULL);
len = nghttp2_pack_settings_payload(buf, 9 /* too small */, iv, 2); len = nghttp2_pack_settings_payload(buf, 9 /* too small */, iv, 2);
CU_ASSERT(NGHTTP2_ERR_INSUFF_BUFSIZE == len); CU_ASSERT(NGHTTP2_ERR_INSUFF_BUFSIZE == len);
@ -5892,6 +5931,9 @@ void test_nghttp2_session_stream_attach_item(void) {
nghttp2_session_callbacks callbacks; nghttp2_session_callbacks callbacks;
nghttp2_stream *a, *b, *c, *d; nghttp2_stream *a, *b, *c, *d;
nghttp2_outbound_item *da, *db, *dc, *dd; nghttp2_outbound_item *da, *db, *dc, *dd;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(callbacks)); memset(&callbacks, 0, sizeof(callbacks));
@ -5909,7 +5951,7 @@ void test_nghttp2_session_stream_attach_item(void) {
* d * d
*/ */
db = create_data_ob_item(); db = create_data_ob_item(mem);
nghttp2_stream_attach_item(b, db, session); nghttp2_stream_attach_item(b, db, session);
@ -5924,7 +5966,7 @@ void test_nghttp2_session_stream_attach_item(void) {
CU_ASSERT(1 == db->queued); CU_ASSERT(1 == db->queued);
dc = create_data_ob_item(); dc = create_data_ob_item(mem);
nghttp2_stream_attach_item(c, dc, session); nghttp2_stream_attach_item(c, dc, session);
@ -5940,7 +5982,7 @@ void test_nghttp2_session_stream_attach_item(void) {
CU_ASSERT(1 == dc->queued); CU_ASSERT(1 == dc->queued);
da = create_data_ob_item(); da = create_data_ob_item(mem);
nghttp2_stream_attach_item(a, da, session); nghttp2_stream_attach_item(a, da, session);
@ -5963,7 +6005,7 @@ void test_nghttp2_session_stream_attach_item(void) {
CU_ASSERT(16 * 16 / 32 == b->effective_weight); CU_ASSERT(16 * 16 / 32 == b->effective_weight);
CU_ASSERT(16 * 16 / 32 == c->effective_weight); CU_ASSERT(16 * 16 / 32 == c->effective_weight);
dd = create_data_ob_item(); dd = create_data_ob_item(mem);
nghttp2_stream_attach_item(d, dd, session); nghttp2_stream_attach_item(d, dd, session);
@ -6007,6 +6049,9 @@ void test_nghttp2_session_stream_attach_item_subtree(void) {
nghttp2_session_callbacks callbacks; nghttp2_session_callbacks callbacks;
nghttp2_stream *a, *b, *c, *d, *e, *f; nghttp2_stream *a, *b, *c, *d, *e, *f;
nghttp2_outbound_item *db, *dd, *de; nghttp2_outbound_item *db, *dd, *de;
nghttp2_mem *mem;
mem = nghttp2_mem_default();
memset(&callbacks, 0, sizeof(callbacks)); memset(&callbacks, 0, sizeof(callbacks));
@ -6027,11 +6072,11 @@ void test_nghttp2_session_stream_attach_item_subtree(void) {
* d * d
*/ */
de = create_data_ob_item(); de = create_data_ob_item(mem);
nghttp2_stream_attach_item(e, de, session); nghttp2_stream_attach_item(e, de, session);
db = create_data_ob_item(); db = create_data_ob_item(mem);
nghttp2_stream_attach_item(b, db, session); nghttp2_stream_attach_item(b, db, session);
@ -6129,7 +6174,7 @@ void test_nghttp2_session_stream_attach_item_subtree(void) {
CU_ASSERT(NGHTTP2_STREAM_DPRI_TOP == e->dpri); CU_ASSERT(NGHTTP2_STREAM_DPRI_TOP == e->dpri);
CU_ASSERT(NGHTTP2_STREAM_DPRI_NO_ITEM == f->dpri); CU_ASSERT(NGHTTP2_STREAM_DPRI_NO_ITEM == f->dpri);
dd = create_data_ob_item(); dd = create_data_ob_item(mem);
nghttp2_stream_attach_item(d, dd, session); nghttp2_stream_attach_item(d, dd, session);

View File

@ -114,26 +114,26 @@ void nva_out_init(nva_out *out) {
out->nvlen = 0; out->nvlen = 0;
} }
void nva_out_reset(nva_out *out) { void nva_out_reset(nva_out *out, nghttp2_mem *mem) {
size_t i; size_t i;
for (i = 0; i < out->nvlen; ++i) { for (i = 0; i < out->nvlen; ++i) {
free(out->nva[i].name); mem->free(out->nva[i].name, NULL);
free(out->nva[i].value); mem->free(out->nva[i].value, NULL);
} }
memset(out->nva, 0, sizeof(out->nva)); memset(out->nva, 0, sizeof(out->nva));
out->nvlen = 0; out->nvlen = 0;
} }
void add_out(nva_out *out, nghttp2_nv *nv) { void add_out(nva_out *out, nghttp2_nv *nv, nghttp2_mem *mem) {
nghttp2_nv *onv = &out->nva[out->nvlen]; nghttp2_nv *onv = &out->nva[out->nvlen];
if (nv->namelen) { if (nv->namelen) {
onv->name = malloc(nv->namelen); onv->name = mem->malloc(nv->namelen, NULL);
memcpy(onv->name, nv->name, nv->namelen); memcpy(onv->name, nv->name, nv->namelen);
} else { } else {
onv->name = NULL; onv->name = NULL;
} }
if (nv->valuelen) { if (nv->valuelen) {
onv->value = malloc(nv->valuelen); onv->value = mem->malloc(nv->valuelen, NULL);
memcpy(onv->value, nv->value, nv->valuelen); memcpy(onv->value, nv->value, nv->valuelen);
} else { } else {
onv->value = NULL; onv->value = NULL;
@ -147,7 +147,7 @@ void add_out(nva_out *out, nghttp2_nv *nv) {
} }
ssize_t inflate_hd(nghttp2_hd_inflater *inflater, nva_out *out, ssize_t inflate_hd(nghttp2_hd_inflater *inflater, nva_out *out,
nghttp2_bufs *bufs, size_t offset) { nghttp2_bufs *bufs, size_t offset, nghttp2_mem *mem) {
ssize_t rv; ssize_t rv;
nghttp2_nv nv; nghttp2_nv nv;
int inflate_flags; int inflate_flags;
@ -186,7 +186,7 @@ ssize_t inflate_hd(nghttp2_hd_inflater *inflater, nva_out *out,
if (inflate_flags & NGHTTP2_HD_INFLATE_EMIT) { if (inflate_flags & NGHTTP2_HD_INFLATE_EMIT) {
if (out) { if (out) {
add_out(out, &nv); add_out(out, &nv, mem);
} }
} }
if (inflate_flags & NGHTTP2_HD_INFLATE_FINAL) { if (inflate_flags & NGHTTP2_HD_INFLATE_FINAL) {
@ -293,10 +293,10 @@ nghttp2_stream *open_stream_with_dep_excl(nghttp2_session *session,
dep_stream); dep_stream);
} }
nghttp2_outbound_item *create_data_ob_item(void) { nghttp2_outbound_item *create_data_ob_item(nghttp2_mem *mem) {
nghttp2_outbound_item *item; nghttp2_outbound_item *item;
item = malloc(sizeof(nghttp2_outbound_item)); item = mem->malloc(sizeof(nghttp2_outbound_item), NULL);
memset(item, 0, sizeof(nghttp2_outbound_item)); memset(item, 0, sizeof(nghttp2_outbound_item));
return item; return item;

View File

@ -40,12 +40,12 @@
} }
#define ARRLEN(ARR) (sizeof(ARR) / sizeof(ARR[0])) #define ARRLEN(ARR) (sizeof(ARR) / sizeof(ARR[0]))
#define assert_nv_equal(A, B, len) \ #define assert_nv_equal(A, B, len, mem) \
do { \ do { \
size_t alloclen = sizeof(nghttp2_nv) * len; \ size_t alloclen = sizeof(nghttp2_nv) * len; \
const nghttp2_nv *sa = A, *sb = B; \ const nghttp2_nv *sa = A, *sb = B; \
nghttp2_nv *a = malloc(alloclen); \ nghttp2_nv *a = mem->malloc(alloclen, NULL); \
nghttp2_nv *b = malloc(alloclen); \ nghttp2_nv *b = mem->malloc(alloclen, NULL); \
ssize_t i_; \ ssize_t i_; \
memcpy(a, sa, alloclen); \ memcpy(a, sa, alloclen); \
memcpy(b, sb, alloclen); \ memcpy(b, sb, alloclen); \
@ -54,8 +54,8 @@
for (i_ = 0; i_ < (ssize_t)len; ++i_) { \ for (i_ = 0; i_ < (ssize_t)len; ++i_) { \
CU_ASSERT(nghttp2_nv_equal(&a[i_], &b[i_])); \ CU_ASSERT(nghttp2_nv_equal(&a[i_], &b[i_])); \
} \ } \
free(b); \ mem->free(b, NULL); \
free(a); \ mem->free(a, NULL); \
} while (0); } while (0);
int unpack_framebuf(nghttp2_frame *frame, nghttp2_bufs *bufs); int unpack_framebuf(nghttp2_frame *frame, nghttp2_bufs *bufs);
@ -74,12 +74,12 @@ typedef struct {
} nva_out; } nva_out;
void nva_out_init(nva_out *out); void nva_out_init(nva_out *out);
void nva_out_reset(nva_out *out); void nva_out_reset(nva_out *out, nghttp2_mem *mem);
void add_out(nva_out *out, nghttp2_nv *nv); void add_out(nva_out *out, nghttp2_nv *nv, nghttp2_mem *mem);
ssize_t inflate_hd(nghttp2_hd_inflater *inflater, nva_out *out, ssize_t inflate_hd(nghttp2_hd_inflater *inflater, nva_out *out,
nghttp2_bufs *bufs, size_t offset); nghttp2_bufs *bufs, size_t offset, nghttp2_mem *mem);
int pack_headers(nghttp2_bufs *bufs, nghttp2_hd_deflater *deflater, int pack_headers(nghttp2_bufs *bufs, nghttp2_hd_deflater *deflater,
int32_t stream_id, int flags, const nghttp2_nv *nva, int32_t stream_id, int flags, const nghttp2_nv *nva,
@ -107,6 +107,6 @@ nghttp2_stream *open_stream_with_dep_excl(nghttp2_session *session,
int32_t stream_id, int32_t stream_id,
nghttp2_stream *dep_stream); nghttp2_stream *dep_stream);
nghttp2_outbound_item *create_data_ob_item(void); nghttp2_outbound_item *create_data_ob_item(nghttp2_mem *mem);
#endif /* NGHTTP2_TEST_HELPER_H */ #endif /* NGHTTP2_TEST_HELPER_H */