nghttp2_hd: Rename local as deflate
This commit is contained in:
parent
1c17f7f286
commit
6c99ff12c9
|
@ -58,10 +58,10 @@ json_t* dump_header_table(nghttp2_hd_context *context)
|
||||||
json_object_set_new(obj, "maxSize",
|
json_object_set_new(obj, "maxSize",
|
||||||
json_integer(context->hd_table_bufsize_max));
|
json_integer(context->hd_table_bufsize_max));
|
||||||
if(context->role == NGHTTP2_HD_ROLE_DEFLATE) {
|
if(context->role == NGHTTP2_HD_ROLE_DEFLATE) {
|
||||||
json_object_set_new(obj, "localSize",
|
json_object_set_new(obj, "deflateSize",
|
||||||
json_integer(context->local_hd_table_bufsize));
|
json_integer(context->deflate_hd_table_bufsize));
|
||||||
json_object_set_new(obj, "maxLocalSize",
|
json_object_set_new(obj, "maxDeflateSize",
|
||||||
json_integer(context->local_hd_table_bufsize_max));
|
json_integer(context->deflate_hd_table_bufsize_max));
|
||||||
}
|
}
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
typedef struct {
|
typedef struct {
|
||||||
nghttp2_hd_side side;
|
nghttp2_hd_side side;
|
||||||
size_t table_size;
|
size_t table_size;
|
||||||
size_t local_table_size;
|
size_t deflate_table_size;
|
||||||
int http1text;
|
int http1text;
|
||||||
int dump_header_table;
|
int dump_header_table;
|
||||||
} deflate_config;
|
} deflate_config;
|
||||||
|
@ -271,7 +271,7 @@ static void print_help(void)
|
||||||
" specification, this value is denoted by\n"
|
" specification, this value is denoted by\n"
|
||||||
" SETTINGS_HEADER_TABLE_SIZE.\n"
|
" SETTINGS_HEADER_TABLE_SIZE.\n"
|
||||||
" Default: 4096\n"
|
" Default: 4096\n"
|
||||||
" -S, --local-table-size=<N>\n"
|
" -S, --deflate-table-size=<N>\n"
|
||||||
" Use first N bytes of dynamic header table\n"
|
" Use first N bytes of dynamic header table\n"
|
||||||
" buffer.\n"
|
" buffer.\n"
|
||||||
" Default: 4096\n"
|
" Default: 4096\n"
|
||||||
|
@ -283,7 +283,7 @@ static struct option long_options[] = {
|
||||||
{"response", no_argument, NULL, 'r'},
|
{"response", no_argument, NULL, 'r'},
|
||||||
{"http1text", no_argument, NULL, 't'},
|
{"http1text", no_argument, NULL, 't'},
|
||||||
{"table-size", required_argument, NULL, 's'},
|
{"table-size", required_argument, NULL, 's'},
|
||||||
{"local-table-size", required_argument, NULL, 'S'},
|
{"deflate-table-size", required_argument, NULL, 'S'},
|
||||||
{"dump-header-table", no_argument, NULL, 'd'},
|
{"dump-header-table", no_argument, NULL, 'd'},
|
||||||
{NULL, 0, NULL, 0 }
|
{NULL, 0, NULL, 0 }
|
||||||
};
|
};
|
||||||
|
@ -295,7 +295,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
config.side = NGHTTP2_HD_SIDE_REQUEST;
|
config.side = NGHTTP2_HD_SIDE_REQUEST;
|
||||||
config.table_size = NGHTTP2_HD_DEFAULT_MAX_BUFFER_SIZE;
|
config.table_size = NGHTTP2_HD_DEFAULT_MAX_BUFFER_SIZE;
|
||||||
config.local_table_size = NGHTTP2_HD_DEFAULT_LOCAL_MAX_BUFFER_SIZE;
|
config.deflate_table_size = NGHTTP2_HD_DEFAULT_MAX_DEFLATE_BUFFER_SIZE;
|
||||||
config.http1text = 0;
|
config.http1text = 0;
|
||||||
config.dump_header_table = 0;
|
config.dump_header_table = 0;
|
||||||
while(1) {
|
while(1) {
|
||||||
|
@ -325,8 +325,8 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
/* --local-table-size */
|
/* --deflate-table-size */
|
||||||
config.local_table_size = strtoul(optarg, &end, 10);
|
config.deflate_table_size = strtoul(optarg, &end, 10);
|
||||||
if(errno == ERANGE || *end != '\0') {
|
if(errno == ERANGE || *end != '\0') {
|
||||||
fprintf(stderr, "-S: Bad option value\n");
|
fprintf(stderr, "-S: Bad option value\n");
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
@ -342,7 +342,7 @@ int main(int argc, char **argv)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nghttp2_hd_deflate_init2(&deflater, config.side, config.local_table_size);
|
nghttp2_hd_deflate_init2(&deflater, config.side, config.deflate_table_size);
|
||||||
nghttp2_hd_change_table_size(&deflater, config.table_size);
|
nghttp2_hd_change_table_size(&deflater, config.table_size);
|
||||||
if(config.http1text) {
|
if(config.http1text) {
|
||||||
perform_from_http1text(&deflater);
|
perform_from_http1text(&deflater);
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
#include "nghttp2_helper.h"
|
#include "nghttp2_helper.h"
|
||||||
|
|
||||||
/* Make scalar initialization form of nghttp2_nv */
|
/* Make scalar initialization form of nghttp2_nv */
|
||||||
#define MAKE_NV(N, V) \
|
#define MAKE_NV(N, V) \
|
||||||
{ { (uint8_t*)N, (uint8_t*)V, sizeof(N) - 1, sizeof(V) - 1 }, \
|
{ { (uint8_t*)N, (uint8_t*)V, sizeof(N) - 1, sizeof(V) - 1 }, \
|
||||||
1, NGHTTP2_HD_FLAG_NONE }
|
1, NGHTTP2_HD_FLAG_NONE }
|
||||||
|
|
||||||
|
@ -245,7 +245,7 @@ static void nghttp2_hd_ringbuf_pop_back(nghttp2_hd_ringbuf *ringbuf)
|
||||||
static int nghttp2_hd_context_init(nghttp2_hd_context *context,
|
static int nghttp2_hd_context_init(nghttp2_hd_context *context,
|
||||||
nghttp2_hd_role role,
|
nghttp2_hd_role role,
|
||||||
nghttp2_hd_side side,
|
nghttp2_hd_side side,
|
||||||
size_t local_hd_table_bufsize_max)
|
size_t deflate_hd_table_bufsize_max)
|
||||||
{
|
{
|
||||||
int rv;
|
int rv;
|
||||||
context->role = role;
|
context->role = role;
|
||||||
|
@ -281,9 +281,9 @@ static int nghttp2_hd_context_init(nghttp2_hd_context *context,
|
||||||
context->buf_track = NULL;
|
context->buf_track = NULL;
|
||||||
context->buf_track_capacity = 0;
|
context->buf_track_capacity = 0;
|
||||||
}
|
}
|
||||||
context->local_hd_table_bufsize_max = local_hd_table_bufsize_max;
|
context->deflate_hd_table_bufsize_max = deflate_hd_table_bufsize_max;
|
||||||
context->local_hd_table_bufsize = 0;
|
context->deflate_hd_table_bufsize = 0;
|
||||||
context->local_hd_tablelen = 0;
|
context->deflate_hd_tablelen = 0;
|
||||||
context->emit_setlen = 0;
|
context->emit_setlen = 0;
|
||||||
context->buf_tracklen = 0;
|
context->buf_tracklen = 0;
|
||||||
context->hd_table_bufsize = 0;
|
context->hd_table_bufsize = 0;
|
||||||
|
@ -298,15 +298,15 @@ static int nghttp2_hd_context_init(nghttp2_hd_context *context,
|
||||||
int nghttp2_hd_deflate_init(nghttp2_hd_context *deflater, nghttp2_hd_side side)
|
int nghttp2_hd_deflate_init(nghttp2_hd_context *deflater, nghttp2_hd_side side)
|
||||||
{
|
{
|
||||||
return nghttp2_hd_context_init(deflater, NGHTTP2_HD_ROLE_DEFLATE, side,
|
return nghttp2_hd_context_init(deflater, NGHTTP2_HD_ROLE_DEFLATE, side,
|
||||||
NGHTTP2_HD_DEFAULT_LOCAL_MAX_BUFFER_SIZE);
|
NGHTTP2_HD_DEFAULT_MAX_DEFLATE_BUFFER_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
int nghttp2_hd_deflate_init2(nghttp2_hd_context *deflater,
|
int nghttp2_hd_deflate_init2(nghttp2_hd_context *deflater,
|
||||||
nghttp2_hd_side side,
|
nghttp2_hd_side side,
|
||||||
size_t local_hd_table_bufsize_max)
|
size_t deflate_hd_table_bufsize_max)
|
||||||
{
|
{
|
||||||
return nghttp2_hd_context_init(deflater, NGHTTP2_HD_ROLE_DEFLATE, side,
|
return nghttp2_hd_context_init(deflater, NGHTTP2_HD_ROLE_DEFLATE, side,
|
||||||
local_hd_table_bufsize_max);
|
deflate_hd_table_bufsize_max);
|
||||||
}
|
}
|
||||||
|
|
||||||
int nghttp2_hd_inflate_init(nghttp2_hd_context *inflater, nghttp2_hd_side side)
|
int nghttp2_hd_inflate_init(nghttp2_hd_context *inflater, nghttp2_hd_side side)
|
||||||
|
@ -706,10 +706,10 @@ static nghttp2_hd_entry* add_hd_table_incremental(nghttp2_hd_context *context,
|
||||||
nghttp2_hd_entry* ent = nghttp2_hd_ringbuf_get(&context->hd_table, index);
|
nghttp2_hd_entry* ent = nghttp2_hd_ringbuf_get(&context->hd_table, index);
|
||||||
context->hd_table_bufsize -= entry_room(ent->nv.namelen, ent->nv.valuelen);
|
context->hd_table_bufsize -= entry_room(ent->nv.namelen, ent->nv.valuelen);
|
||||||
if(context->role == NGHTTP2_HD_ROLE_DEFLATE) {
|
if(context->role == NGHTTP2_HD_ROLE_DEFLATE) {
|
||||||
if(context->hd_table_bufsize < context->local_hd_table_bufsize) {
|
if(context->hd_table_bufsize < context->deflate_hd_table_bufsize) {
|
||||||
context->local_hd_table_bufsize -= entry_room(ent->nv.namelen,
|
context->deflate_hd_table_bufsize -= entry_room(ent->nv.namelen,
|
||||||
ent->nv.valuelen);
|
ent->nv.valuelen);
|
||||||
--context->local_hd_tablelen;
|
--context->deflate_hd_tablelen;
|
||||||
}
|
}
|
||||||
if(ent->flags & NGHTTP2_HD_FLAG_IMPLICIT_EMIT) {
|
if(ent->flags & NGHTTP2_HD_FLAG_IMPLICIT_EMIT) {
|
||||||
/* Emit common header just before it slips away from the
|
/* Emit common header just before it slips away from the
|
||||||
|
@ -728,15 +728,15 @@ static nghttp2_hd_entry* add_hd_table_incremental(nghttp2_hd_context *context,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(context->role == NGHTTP2_HD_ROLE_DEFLATE) {
|
if(context->role == NGHTTP2_HD_ROLE_DEFLATE) {
|
||||||
while(context->local_hd_table_bufsize + room >
|
while(context->deflate_hd_table_bufsize + room >
|
||||||
context->local_hd_table_bufsize_max
|
context->deflate_hd_table_bufsize_max
|
||||||
&& context->local_hd_tablelen > 0) {
|
&& context->deflate_hd_tablelen > 0) {
|
||||||
size_t index = context->local_hd_tablelen - 1;
|
size_t index = context->deflate_hd_tablelen - 1;
|
||||||
nghttp2_hd_entry *ent =
|
nghttp2_hd_entry *ent =
|
||||||
nghttp2_hd_ringbuf_get(&context->hd_table, index);
|
nghttp2_hd_ringbuf_get(&context->hd_table, index);
|
||||||
context->local_hd_table_bufsize -= entry_room(ent->nv.namelen,
|
context->deflate_hd_table_bufsize -= entry_room(ent->nv.namelen,
|
||||||
ent->nv.valuelen);
|
ent->nv.valuelen);
|
||||||
--context->local_hd_tablelen;
|
--context->deflate_hd_tablelen;
|
||||||
if(ent->flags & NGHTTP2_HD_FLAG_IMPLICIT_EMIT) {
|
if(ent->flags & NGHTTP2_HD_FLAG_IMPLICIT_EMIT) {
|
||||||
/* Just like a normal eviction, implicit header must be
|
/* Just like a normal eviction, implicit header must be
|
||||||
emitted twice. */
|
emitted twice. */
|
||||||
|
@ -775,7 +775,7 @@ static nghttp2_hd_entry* add_hd_table_incremental(nghttp2_hd_context *context,
|
||||||
}
|
}
|
||||||
|
|
||||||
if(context->role == NGHTTP2_HD_ROLE_DEFLATE &&
|
if(context->role == NGHTTP2_HD_ROLE_DEFLATE &&
|
||||||
room > context->local_hd_table_bufsize_max) {
|
room > context->deflate_hd_table_bufsize_max) {
|
||||||
uint8_t flags = entry_flags &
|
uint8_t flags = entry_flags &
|
||||||
~(NGHTTP2_HD_FLAG_NAME_ALLOC | NGHTTP2_HD_FLAG_VALUE_ALLOC |
|
~(NGHTTP2_HD_FLAG_NAME_ALLOC | NGHTTP2_HD_FLAG_VALUE_ALLOC |
|
||||||
NGHTTP2_HD_FLAG_NAME_GIFT | NGHTTP2_HD_FLAG_VALUE_GIFT);
|
NGHTTP2_HD_FLAG_NAME_GIFT | NGHTTP2_HD_FLAG_VALUE_GIFT);
|
||||||
|
@ -814,9 +814,9 @@ static nghttp2_hd_entry* add_hd_table_incremental(nghttp2_hd_context *context,
|
||||||
new_ent->flags |= NGHTTP2_HD_FLAG_REFSET;
|
new_ent->flags |= NGHTTP2_HD_FLAG_REFSET;
|
||||||
nghttp2_hd_ringbuf_push_front(&context->hd_table, new_ent);
|
nghttp2_hd_ringbuf_push_front(&context->hd_table, new_ent);
|
||||||
if(context->role == NGHTTP2_HD_ROLE_DEFLATE &&
|
if(context->role == NGHTTP2_HD_ROLE_DEFLATE &&
|
||||||
room <= context->local_hd_table_bufsize_max) {
|
room <= context->deflate_hd_table_bufsize_max) {
|
||||||
context->local_hd_table_bufsize += room;
|
context->deflate_hd_table_bufsize += room;
|
||||||
++context->local_hd_tablelen;
|
++context->deflate_hd_tablelen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new_ent;
|
return new_ent;
|
||||||
|
@ -826,7 +826,7 @@ static ssize_t find_in_hd_table(nghttp2_hd_context *context, nghttp2_nv *nv)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t max = context->role == NGHTTP2_HD_ROLE_DEFLATE ?
|
size_t max = context->role == NGHTTP2_HD_ROLE_DEFLATE ?
|
||||||
context->local_hd_tablelen : context->hd_table.len;
|
context->deflate_hd_tablelen : context->hd_table.len;
|
||||||
for(i = 0; i < max; ++i) {
|
for(i = 0; i < max; ++i) {
|
||||||
nghttp2_hd_entry *ent = nghttp2_hd_ringbuf_get(&context->hd_table, i);
|
nghttp2_hd_entry *ent = nghttp2_hd_ringbuf_get(&context->hd_table, i);
|
||||||
if(nghttp2_nv_equal(&ent->nv, nv)) {
|
if(nghttp2_nv_equal(&ent->nv, nv)) {
|
||||||
|
@ -847,7 +847,7 @@ static ssize_t find_name_in_hd_table(nghttp2_hd_context *context,
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
size_t max = context->role == NGHTTP2_HD_ROLE_DEFLATE ?
|
size_t max = context->role == NGHTTP2_HD_ROLE_DEFLATE ?
|
||||||
context->local_hd_tablelen : context->hd_table.len;
|
context->deflate_hd_tablelen : context->hd_table.len;
|
||||||
for(i = 0; i < max; ++i) {
|
for(i = 0; i < max; ++i) {
|
||||||
nghttp2_hd_entry *ent = nghttp2_hd_ringbuf_get(&context->hd_table, i);
|
nghttp2_hd_entry *ent = nghttp2_hd_ringbuf_get(&context->hd_table, i);
|
||||||
if(ent->nv.namelen == nv->namelen &&
|
if(ent->nv.namelen == nv->namelen &&
|
||||||
|
@ -881,10 +881,10 @@ int nghttp2_hd_change_table_size(nghttp2_hd_context *context,
|
||||||
nghttp2_hd_entry* ent = nghttp2_hd_ringbuf_get(&context->hd_table, index);
|
nghttp2_hd_entry* ent = nghttp2_hd_ringbuf_get(&context->hd_table, index);
|
||||||
context->hd_table_bufsize -= entry_room(ent->nv.namelen, ent->nv.valuelen);
|
context->hd_table_bufsize -= entry_room(ent->nv.namelen, ent->nv.valuelen);
|
||||||
if(context->role == NGHTTP2_HD_ROLE_DEFLATE) {
|
if(context->role == NGHTTP2_HD_ROLE_DEFLATE) {
|
||||||
if(context->hd_table_bufsize < context->local_hd_table_bufsize) {
|
if(context->hd_table_bufsize < context->deflate_hd_table_bufsize) {
|
||||||
context->local_hd_table_bufsize -= entry_room(ent->nv.namelen,
|
context->deflate_hd_table_bufsize -= entry_room(ent->nv.namelen,
|
||||||
ent->nv.valuelen);
|
ent->nv.valuelen);
|
||||||
--context->local_hd_tablelen;
|
--context->deflate_hd_tablelen;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
nghttp2_hd_ringbuf_pop_back(&context->hd_table);
|
nghttp2_hd_ringbuf_pop_back(&context->hd_table);
|
||||||
|
@ -940,7 +940,7 @@ static int deflate_nv(nghttp2_hd_context *deflater,
|
||||||
new_ent = NULL;
|
new_ent = NULL;
|
||||||
} else if(new_ent->nv.name != NULL) {
|
} else if(new_ent->nv.name != NULL) {
|
||||||
/* new_ent->ref > 0 and nv.name is not NULL means that new_ent is
|
/* new_ent->ref > 0 and nv.name is not NULL means that new_ent is
|
||||||
in the reference set and in local_hd_table_bufsize */
|
in the reference set and in deflate_hd_table_bufsize */
|
||||||
new_ent->flags |= NGHTTP2_HD_FLAG_EMIT;
|
new_ent->flags |= NGHTTP2_HD_FLAG_EMIT;
|
||||||
}
|
}
|
||||||
rv = emit_indexed_block(buf_ptr, buflen_ptr, offset_ptr, index);
|
rv = emit_indexed_block(buf_ptr, buflen_ptr, offset_ptr, index);
|
||||||
|
@ -1015,7 +1015,7 @@ static int deflate_nv(nghttp2_hd_context *deflater,
|
||||||
free(new_ent);
|
free(new_ent);
|
||||||
} else if(new_ent->nv.name != NULL) {
|
} else if(new_ent->nv.name != NULL) {
|
||||||
/* new_ent->ref > 0 and nv.name is not NULL means that new_ent is
|
/* new_ent->ref > 0 and nv.name is not NULL means that new_ent is
|
||||||
in the reference set and in local_hd_table_bufsize */
|
in the reference set and in deflate_hd_table_bufsize */
|
||||||
new_ent->flags |= NGHTTP2_HD_FLAG_EMIT;
|
new_ent->flags |= NGHTTP2_HD_FLAG_EMIT;
|
||||||
}
|
}
|
||||||
incidx = 1;
|
incidx = 1;
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
/* Default size of maximum table buffer size for encoder. Even if
|
/* Default size of maximum table buffer size for encoder. Even if
|
||||||
remote decoder notifies larger buffer size for its decoding,
|
remote decoder notifies larger buffer size for its decoding,
|
||||||
encoder only uses the memory up to this value. */
|
encoder only uses the memory up to this value. */
|
||||||
#define NGHTTP2_HD_DEFAULT_LOCAL_MAX_BUFFER_SIZE (1 << 12)
|
#define NGHTTP2_HD_DEFAULT_MAX_DEFLATE_BUFFER_SIZE (1 << 12)
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
NGHTTP2_HD_SIDE_REQUEST = 0,
|
NGHTTP2_HD_SIDE_REQUEST = 0,
|
||||||
|
@ -96,18 +96,18 @@ typedef struct {
|
||||||
size_t hd_table_bufsize_max;
|
size_t hd_table_bufsize_max;
|
||||||
/* The current effective header table size for encoding. This value
|
/* The current effective header table size for encoding. This value
|
||||||
is meaningful iff this context is initialized as
|
is meaningful iff this context is initialized as
|
||||||
encoder. |local_hd_table_bufsize| <= |hd_table_bufsize| must be
|
encoder. |deflate_hd_table_bufsize| <= |hd_table_bufsize| must be
|
||||||
hold. */
|
hold. */
|
||||||
size_t local_hd_table_bufsize;
|
size_t deflate_hd_table_bufsize;
|
||||||
/* The maximum effective header table for encoding. Although header
|
/* The maximum effective header table for encoding. Although header
|
||||||
table size is bounded by |hd_table_bufsize_max|, the encoder can
|
table size is bounded by |hd_table_bufsize_max|, the encoder can
|
||||||
use smaller buffer by not retaining the header name/values beyond
|
use smaller buffer by not retaining the header name/values beyond
|
||||||
the |local_hd_table_bufsize_max| and not referencing those
|
the |deflate_hd_table_bufsize_max| and not referencing those
|
||||||
entries. This value is meaningful iff this context is initialized
|
entries. This value is meaningful iff this context is initialized
|
||||||
as encoder. */
|
as encoder. */
|
||||||
size_t local_hd_table_bufsize_max;
|
size_t deflate_hd_table_bufsize_max;
|
||||||
/* The number of effective entry in |hd_table|. */
|
/* The number of effective entry in |hd_table|. */
|
||||||
size_t local_hd_tablelen;
|
size_t deflate_hd_tablelen;
|
||||||
/* Holding emitted entry in deflating header block to retain
|
/* Holding emitted entry in deflating header block to retain
|
||||||
reference count. */
|
reference count. */
|
||||||
nghttp2_hd_entry **emit_set;
|
nghttp2_hd_entry **emit_set;
|
||||||
|
@ -159,7 +159,7 @@ void nghttp2_hd_entry_free(nghttp2_hd_entry *ent);
|
||||||
* Initializes |deflater| for deflating name/values pairs.
|
* Initializes |deflater| for deflating name/values pairs.
|
||||||
*
|
*
|
||||||
* The encoder only uses up to
|
* The encoder only uses up to
|
||||||
* NGHTTP2_HD_DEFAULT_LOCAL_MAX_BUFFER_SIZE bytes for header table
|
* NGHTTP2_HD_DEFAULT_MAX_DEFLATE_BUFFER_SIZE bytes for header table
|
||||||
* even if the larger value is specified later in
|
* even if the larger value is specified later in
|
||||||
* nghttp2_hd_change_table_size().
|
* nghttp2_hd_change_table_size().
|
||||||
*
|
*
|
||||||
|
@ -175,8 +175,8 @@ int nghttp2_hd_deflate_init(nghttp2_hd_context *deflater,
|
||||||
/*
|
/*
|
||||||
* Initializes |deflater| for deflating name/values pairs.
|
* Initializes |deflater| for deflating name/values pairs.
|
||||||
*
|
*
|
||||||
* The encoder only uses up to |local_hd_table_bufsize_max| bytes for
|
* The encoder only uses up to |deflate_hd_table_bufsize_max| bytes
|
||||||
* header table even if the larger value is specified later in
|
* for header table even if the larger value is specified later in
|
||||||
* nghttp2_hd_change_table_size().
|
* nghttp2_hd_change_table_size().
|
||||||
*
|
*
|
||||||
* This function returns 0 if it succeeds, or one of the following
|
* This function returns 0 if it succeeds, or one of the following
|
||||||
|
@ -187,7 +187,7 @@ int nghttp2_hd_deflate_init(nghttp2_hd_context *deflater,
|
||||||
*/
|
*/
|
||||||
int nghttp2_hd_deflate_init2(nghttp2_hd_context *deflater,
|
int nghttp2_hd_deflate_init2(nghttp2_hd_context *deflater,
|
||||||
nghttp2_hd_side side,
|
nghttp2_hd_side side,
|
||||||
size_t local_hd_table_bufsize_max);
|
size_t deflate_hd_table_bufsize_max);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Initializes |inflater| for inflating name/values pairs.
|
* Initializes |inflater| for inflating name/values pairs.
|
||||||
|
|
|
@ -229,8 +229,8 @@ int main(int argc, char* argv[])
|
||||||
test_nghttp2_hd_deflate_same_indexed_repr) ||
|
test_nghttp2_hd_deflate_same_indexed_repr) ||
|
||||||
!CU_add_test(pSuite, "hd_deflate_common_header_eviction",
|
!CU_add_test(pSuite, "hd_deflate_common_header_eviction",
|
||||||
test_nghttp2_hd_deflate_common_header_eviction) ||
|
test_nghttp2_hd_deflate_common_header_eviction) ||
|
||||||
!CU_add_test(pSuite, "hd_deflate_local_buffer",
|
!CU_add_test(pSuite, "hd_deflate_deflate_buffer",
|
||||||
test_nghttp2_hd_deflate_local_buffer) ||
|
test_nghttp2_hd_deflate_deflate_buffer) ||
|
||||||
!CU_add_test(pSuite, "hd_inflate_indname_inc",
|
!CU_add_test(pSuite, "hd_inflate_indname_inc",
|
||||||
test_nghttp2_hd_inflate_indname_inc) ||
|
test_nghttp2_hd_inflate_indname_inc) ||
|
||||||
!CU_add_test(pSuite, "hd_inflate_indname_inc_eviction",
|
!CU_add_test(pSuite, "hd_inflate_indname_inc_eviction",
|
||||||
|
|
|
@ -247,7 +247,7 @@ void test_nghttp2_hd_deflate_common_header_eviction(void)
|
||||||
nghttp2_hd_deflate_free(&deflater);
|
nghttp2_hd_deflate_free(&deflater);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_nghttp2_hd_deflate_local_buffer(void)
|
void test_nghttp2_hd_deflate_deflate_buffer(void)
|
||||||
{
|
{
|
||||||
nghttp2_hd_context deflater, inflater;
|
nghttp2_hd_context deflater, inflater;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
@ -275,7 +275,7 @@ void test_nghttp2_hd_deflate_local_buffer(void)
|
||||||
nv3.namelen = nv3.valuelen = sizeof(val);
|
nv3.namelen = nv3.valuelen = sizeof(val);
|
||||||
|
|
||||||
/* Check the case where entry from static table is inserted to
|
/* Check the case where entry from static table is inserted to
|
||||||
dynamic header table. And it is out of local header table
|
dynamic header table. And it is out of deflate header table
|
||||||
size. */
|
size. */
|
||||||
nghttp2_hd_deflate_init2(&deflater, NGHTTP2_HD_SIDE_REQUEST, 32);
|
nghttp2_hd_deflate_init2(&deflater, NGHTTP2_HD_SIDE_REQUEST, 32);
|
||||||
nghttp2_hd_inflate_init(&inflater, NGHTTP2_HD_SIDE_REQUEST);
|
nghttp2_hd_inflate_init(&inflater, NGHTTP2_HD_SIDE_REQUEST);
|
||||||
|
@ -290,8 +290,8 @@ void test_nghttp2_hd_deflate_local_buffer(void)
|
||||||
* name/value of all entries must be NULL.
|
* name/value of all entries must be NULL.
|
||||||
*/
|
*/
|
||||||
CU_ASSERT(2 == deflater.hd_table.len);
|
CU_ASSERT(2 == deflater.hd_table.len);
|
||||||
CU_ASSERT(0 == deflater.local_hd_tablelen);
|
CU_ASSERT(0 == deflater.deflate_hd_tablelen);
|
||||||
CU_ASSERT(0 == deflater.local_hd_table_bufsize);
|
CU_ASSERT(0 == deflater.deflate_hd_table_bufsize);
|
||||||
for(i = 0; i < 2; ++i) {
|
for(i = 0; i < 2; ++i) {
|
||||||
ent = nghttp2_hd_table_get(&deflater, i);
|
ent = nghttp2_hd_table_get(&deflater, i);
|
||||||
CU_ASSERT(ent->nv.name == NULL);
|
CU_ASSERT(ent->nv.name == NULL);
|
||||||
|
@ -308,7 +308,7 @@ void test_nghttp2_hd_deflate_local_buffer(void)
|
||||||
nghttp2_hd_deflate_free(&deflater);
|
nghttp2_hd_deflate_free(&deflater);
|
||||||
nghttp2_hd_inflate_free(&inflater);
|
nghttp2_hd_inflate_free(&inflater);
|
||||||
|
|
||||||
/* 156 buffer size can hold all headers in local region */
|
/* 156 buffer size can hold all headers in deflate region */
|
||||||
nghttp2_hd_deflate_init2(&deflater, NGHTTP2_HD_SIDE_REQUEST,
|
nghttp2_hd_deflate_init2(&deflater, NGHTTP2_HD_SIDE_REQUEST,
|
||||||
156);
|
156);
|
||||||
blocklen = nghttp2_hd_deflate_hd(&deflater, &buf, &buflen, 0,
|
blocklen = nghttp2_hd_deflate_hd(&deflater, &buf, &buflen, 0,
|
||||||
|
@ -322,8 +322,8 @@ void test_nghttp2_hd_deflate_local_buffer(void)
|
||||||
* 3: k1, v1
|
* 3: k1, v1
|
||||||
*/
|
*/
|
||||||
CU_ASSERT(4 == deflater.hd_table.len);
|
CU_ASSERT(4 == deflater.hd_table.len);
|
||||||
CU_ASSERT(4 == deflater.local_hd_tablelen);
|
CU_ASSERT(4 == deflater.deflate_hd_tablelen);
|
||||||
CU_ASSERT(156 == deflater.local_hd_table_bufsize);
|
CU_ASSERT(156 == deflater.deflate_hd_table_bufsize);
|
||||||
for(i = 0; i < 4; ++i) {
|
for(i = 0; i < 4; ++i) {
|
||||||
CU_ASSERT(nghttp2_hd_table_get(&deflater, i)->nv.name != NULL);
|
CU_ASSERT(nghttp2_hd_table_get(&deflater, i)->nv.name != NULL);
|
||||||
CU_ASSERT(nghttp2_hd_table_get(&deflater, i)->nv.value != NULL);
|
CU_ASSERT(nghttp2_hd_table_get(&deflater, i)->nv.value != NULL);
|
||||||
|
@ -331,15 +331,15 @@ void test_nghttp2_hd_deflate_local_buffer(void)
|
||||||
|
|
||||||
CU_ASSERT(0 == nghttp2_hd_change_table_size(&deflater, 156));
|
CU_ASSERT(0 == nghttp2_hd_change_table_size(&deflater, 156));
|
||||||
CU_ASSERT(4 == deflater.hd_table.len);
|
CU_ASSERT(4 == deflater.hd_table.len);
|
||||||
CU_ASSERT(4 == deflater.local_hd_tablelen);
|
CU_ASSERT(4 == deflater.deflate_hd_tablelen);
|
||||||
CU_ASSERT(156 == deflater.local_hd_table_bufsize);
|
CU_ASSERT(156 == deflater.deflate_hd_table_bufsize);
|
||||||
|
|
||||||
blocklen = nghttp2_hd_deflate_hd(&deflater, &buf, &buflen, 0, &nv3, 1);
|
blocklen = nghttp2_hd_deflate_hd(&deflater, &buf, &buflen, 0, &nv3, 1);
|
||||||
CU_ASSERT(blocklen > 0);
|
CU_ASSERT(blocklen > 0);
|
||||||
/* Now header table should be empty */
|
/* Now header table should be empty */
|
||||||
CU_ASSERT(0 == deflater.hd_table.len);
|
CU_ASSERT(0 == deflater.hd_table.len);
|
||||||
CU_ASSERT(0 == deflater.local_hd_tablelen);
|
CU_ASSERT(0 == deflater.deflate_hd_tablelen);
|
||||||
CU_ASSERT(0 == deflater.local_hd_table_bufsize);
|
CU_ASSERT(0 == deflater.deflate_hd_table_bufsize);
|
||||||
|
|
||||||
nghttp2_hd_deflate_free(&deflater);
|
nghttp2_hd_deflate_free(&deflater);
|
||||||
|
|
||||||
|
@ -357,12 +357,12 @@ void test_nghttp2_hd_deflate_local_buffer(void)
|
||||||
* 2: k10, v10 (R)
|
* 2: k10, v10 (R)
|
||||||
* 3: k1, v1 (-) <- name, value must be NULL and not in reference set
|
* 3: k1, v1 (-) <- name, value must be NULL and not in reference set
|
||||||
*
|
*
|
||||||
* But due to the local table size limit, name/value of index=3 must
|
* But due to the deflate table size limit, name/value of index=3 must
|
||||||
* be NULL.
|
* be NULL.
|
||||||
*/
|
*/
|
||||||
CU_ASSERT(4 == deflater.hd_table.len);
|
CU_ASSERT(4 == deflater.hd_table.len);
|
||||||
CU_ASSERT(3 == deflater.local_hd_tablelen);
|
CU_ASSERT(3 == deflater.deflate_hd_tablelen);
|
||||||
CU_ASSERT(120 == deflater.local_hd_table_bufsize);
|
CU_ASSERT(120 == deflater.deflate_hd_table_bufsize);
|
||||||
for(i = 0; i < 3; ++i) {
|
for(i = 0; i < 3; ++i) {
|
||||||
CU_ASSERT(nghttp2_hd_table_get(&deflater, i)->nv.name != NULL);
|
CU_ASSERT(nghttp2_hd_table_get(&deflater, i)->nv.name != NULL);
|
||||||
CU_ASSERT(nghttp2_hd_table_get(&deflater, i)->nv.value != NULL);
|
CU_ASSERT(nghttp2_hd_table_get(&deflater, i)->nv.value != NULL);
|
||||||
|
@ -390,8 +390,8 @@ void test_nghttp2_hd_deflate_local_buffer(void)
|
||||||
* 4: k1, v1 (-) <- name, value must be NULL
|
* 4: k1, v1 (-) <- name, value must be NULL
|
||||||
*/
|
*/
|
||||||
CU_ASSERT(5 == deflater.hd_table.len);
|
CU_ASSERT(5 == deflater.hd_table.len);
|
||||||
CU_ASSERT(3 == deflater.local_hd_tablelen);
|
CU_ASSERT(3 == deflater.deflate_hd_tablelen);
|
||||||
CU_ASSERT(118 == deflater.local_hd_table_bufsize);
|
CU_ASSERT(118 == deflater.deflate_hd_table_bufsize);
|
||||||
ent = nghttp2_hd_table_get(&deflater, 3);
|
ent = nghttp2_hd_table_get(&deflater, 3);
|
||||||
CU_ASSERT(0 == (ent->flags & NGHTTP2_HD_FLAG_REFSET));
|
CU_ASSERT(0 == (ent->flags & NGHTTP2_HD_FLAG_REFSET));
|
||||||
ent = nghttp2_hd_table_get(&deflater, 3);
|
ent = nghttp2_hd_table_get(&deflater, 3);
|
||||||
|
@ -419,8 +419,8 @@ void test_nghttp2_hd_deflate_local_buffer(void)
|
||||||
* name/value of all entries must be NULL.
|
* name/value of all entries must be NULL.
|
||||||
*/
|
*/
|
||||||
CU_ASSERT(6 == deflater.hd_table.len);
|
CU_ASSERT(6 == deflater.hd_table.len);
|
||||||
CU_ASSERT(0 == deflater.local_hd_tablelen);
|
CU_ASSERT(0 == deflater.deflate_hd_tablelen);
|
||||||
CU_ASSERT(0 == deflater.local_hd_table_bufsize);
|
CU_ASSERT(0 == deflater.deflate_hd_table_bufsize);
|
||||||
for(i = 0; i < 6; ++i) {
|
for(i = 0; i < 6; ++i) {
|
||||||
ent = nghttp2_hd_table_get(&deflater, i);
|
ent = nghttp2_hd_table_get(&deflater, i);
|
||||||
CU_ASSERT(0 == (ent->flags & NGHTTP2_HD_FLAG_REFSET));
|
CU_ASSERT(0 == (ent->flags & NGHTTP2_HD_FLAG_REFSET));
|
||||||
|
@ -601,14 +601,14 @@ void test_nghttp2_hd_change_table_size(void)
|
||||||
CU_ASSERT(0 == nghttp2_hd_change_table_size(&deflater, 16384));
|
CU_ASSERT(0 == nghttp2_hd_change_table_size(&deflater, 16384));
|
||||||
CU_ASSERT(511 == deflater.hd_table.mask);
|
CU_ASSERT(511 == deflater.hd_table.mask);
|
||||||
CU_ASSERT(2 == deflater.hd_table.len);
|
CU_ASSERT(2 == deflater.hd_table.len);
|
||||||
CU_ASSERT(2 == deflater.local_hd_tablelen);
|
CU_ASSERT(2 == deflater.deflate_hd_tablelen);
|
||||||
CU_ASSERT(5 ==
|
CU_ASSERT(5 ==
|
||||||
deflater.hd_table.buffer[deflater.hd_table.first]->nv.namelen);
|
deflater.hd_table.buffer[deflater.hd_table.first]->nv.namelen);
|
||||||
|
|
||||||
CU_ASSERT(0 == nghttp2_hd_change_table_size(&deflater, 0));
|
CU_ASSERT(0 == nghttp2_hd_change_table_size(&deflater, 0));
|
||||||
CU_ASSERT(511 == deflater.hd_table.mask);
|
CU_ASSERT(511 == deflater.hd_table.mask);
|
||||||
CU_ASSERT(0 == deflater.hd_table.len);
|
CU_ASSERT(0 == deflater.hd_table.len);
|
||||||
CU_ASSERT(0 == deflater.local_hd_tablelen);
|
CU_ASSERT(0 == deflater.deflate_hd_tablelen);
|
||||||
|
|
||||||
free(buf);
|
free(buf);
|
||||||
nghttp2_hd_deflate_free(&deflater);
|
nghttp2_hd_deflate_free(&deflater);
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
void test_nghttp2_hd_deflate(void);
|
void test_nghttp2_hd_deflate(void);
|
||||||
void test_nghttp2_hd_deflate_same_indexed_repr(void);
|
void test_nghttp2_hd_deflate_same_indexed_repr(void);
|
||||||
void test_nghttp2_hd_deflate_common_header_eviction(void);
|
void test_nghttp2_hd_deflate_common_header_eviction(void);
|
||||||
void test_nghttp2_hd_deflate_local_buffer(void);
|
void test_nghttp2_hd_deflate_deflate_buffer(void);
|
||||||
void test_nghttp2_hd_inflate_indname_inc(void);
|
void test_nghttp2_hd_inflate_indname_inc(void);
|
||||||
void test_nghttp2_hd_inflate_indname_inc_eviction(void);
|
void test_nghttp2_hd_inflate_indname_inc_eviction(void);
|
||||||
void test_nghttp2_hd_inflate_newname_inc(void);
|
void test_nghttp2_hd_inflate_newname_inc(void);
|
||||||
|
|
Loading…
Reference in New Issue