Remove ent_name member and use index solely
This commit is contained in:
parent
06453fb15e
commit
e147c14186
|
@ -360,7 +360,6 @@ int nghttp2_hd_inflate_init(nghttp2_hd_inflater *inflater)
|
||||||
inflater->newnamelen = 0;
|
inflater->newnamelen = 0;
|
||||||
inflater->index_required = 0;
|
inflater->index_required = 0;
|
||||||
inflater->no_index = 0;
|
inflater->no_index = 0;
|
||||||
inflater->ent_name = NULL;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
@ -1408,6 +1407,7 @@ static int hd_inflate_commit_indname(nghttp2_hd_inflater *inflater,
|
||||||
{
|
{
|
||||||
int rv;
|
int rv;
|
||||||
nghttp2_nv nv;
|
nghttp2_nv nv;
|
||||||
|
nghttp2_hd_entry *ent_name;
|
||||||
|
|
||||||
rv = hd_inflate_remove_bufs(inflater, &nv, 1 /* value only */);
|
rv = hd_inflate_remove_bufs(inflater, &nv, 1 /* value only */);
|
||||||
if(rv != 0) {
|
if(rv != 0) {
|
||||||
|
@ -1420,8 +1420,10 @@ static int hd_inflate_commit_indname(nghttp2_hd_inflater *inflater,
|
||||||
nv.flags = NGHTTP2_NV_FLAG_NONE;
|
nv.flags = NGHTTP2_NV_FLAG_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
nv.name = inflater->ent_name->nv.name;
|
ent_name = nghttp2_hd_table_get(&inflater->ctx, inflater->index);
|
||||||
nv.namelen = inflater->ent_name->nv.namelen;
|
|
||||||
|
nv.name = ent_name->nv.name;
|
||||||
|
nv.namelen = ent_name->nv.namelen;
|
||||||
|
|
||||||
if(inflater->index_required) {
|
if(inflater->index_required) {
|
||||||
nghttp2_hd_entry *new_ent;
|
nghttp2_hd_entry *new_ent;
|
||||||
|
@ -1435,18 +1437,16 @@ static int hd_inflate_commit_indname(nghttp2_hd_inflater *inflater,
|
||||||
ent_flags |= NGHTTP2_HD_FLAG_NAME_ALLOC;
|
ent_flags |= NGHTTP2_HD_FLAG_NAME_ALLOC;
|
||||||
/* For entry in static table, we must not touch ref, because it
|
/* For entry in static table, we must not touch ref, because it
|
||||||
is shared by threads */
|
is shared by threads */
|
||||||
++inflater->ent_name->ref;
|
++ent_name->ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
new_ent = add_hd_table_incremental(&inflater->ctx, NULL, &nv, ent_flags);
|
new_ent = add_hd_table_incremental(&inflater->ctx, NULL, &nv, ent_flags);
|
||||||
|
|
||||||
if(!static_name && --inflater->ent_name->ref == 0) {
|
if(!static_name && --ent_name->ref == 0) {
|
||||||
nghttp2_hd_entry_free(inflater->ent_name);
|
nghttp2_hd_entry_free(ent_name);
|
||||||
free(inflater->ent_name);
|
free(ent_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
inflater->ent_name = NULL;
|
|
||||||
|
|
||||||
if(new_ent) {
|
if(new_ent) {
|
||||||
emit_indexed_header(nv_out, new_ent);
|
emit_indexed_header(nv_out, new_ent);
|
||||||
|
|
||||||
|
@ -1556,19 +1556,20 @@ ssize_t nghttp2_hd_inflate_hd(nghttp2_hd_inflater *inflater,
|
||||||
|
|
||||||
in += rv;
|
in += rv;
|
||||||
|
|
||||||
|
if(!rfin) {
|
||||||
|
goto almost_ok;
|
||||||
|
}
|
||||||
|
|
||||||
if(inflater->left == 0) {
|
if(inflater->left == 0) {
|
||||||
rv = NGHTTP2_ERR_HEADER_COMP;
|
rv = NGHTTP2_ERR_HEADER_COMP;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!rfin) {
|
|
||||||
goto almost_ok;
|
|
||||||
}
|
|
||||||
DEBUGF(fprintf(stderr, "inflatehd: index=%zu\n", inflater->left));
|
DEBUGF(fprintf(stderr, "inflatehd: index=%zu\n", inflater->left));
|
||||||
if(inflater->opcode == NGHTTP2_HD_OPCODE_INDEXED) {
|
if(inflater->opcode == NGHTTP2_HD_OPCODE_INDEXED) {
|
||||||
inflater->index = inflater->left;
|
inflater->index = inflater->left;
|
||||||
assert(inflater->index > 0);
|
|
||||||
--inflater->index;
|
--inflater->index;
|
||||||
|
|
||||||
rv = hd_inflate_commit_indexed(inflater, nv_out);
|
rv = hd_inflate_commit_indexed(inflater, nv_out);
|
||||||
if(rv < 0) {
|
if(rv < 0) {
|
||||||
goto fail;
|
goto fail;
|
||||||
|
@ -1581,10 +1582,8 @@ ssize_t nghttp2_hd_inflate_hd(nghttp2_hd_inflater *inflater,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
inflater->index = inflater->left;
|
inflater->index = inflater->left;
|
||||||
assert(inflater->index > 0);
|
|
||||||
--inflater->index;
|
--inflater->index;
|
||||||
inflater->ent_name = nghttp2_hd_table_get(&inflater->ctx,
|
|
||||||
inflater->index);
|
|
||||||
inflater->state = NGHTTP2_HD_STATE_CHECK_VALUELEN;
|
inflater->state = NGHTTP2_HD_STATE_CHECK_VALUELEN;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -138,9 +138,6 @@ struct nghttp2_hd_inflater {
|
||||||
/* Pointer to the name/value pair buffer which is used in the
|
/* Pointer to the name/value pair buffer which is used in the
|
||||||
current header emission. */
|
current header emission. */
|
||||||
uint8_t *nv_keep;
|
uint8_t *nv_keep;
|
||||||
/* Pointers to the name/value pair which is referred as indexed
|
|
||||||
name. This entry must be in header table. */
|
|
||||||
nghttp2_hd_entry *ent_name;
|
|
||||||
/* The number of bytes to read */
|
/* The number of bytes to read */
|
||||||
size_t left;
|
size_t left;
|
||||||
/* The index in indexed repr or indexed name */
|
/* The index in indexed repr or indexed name */
|
||||||
|
|
Loading…
Reference in New Issue