Lines Matching defs:sctx

3220 void nghttp3_qpack_stream_context_init(nghttp3_qpack_stream_context *sctx,
3223 nghttp3_qpack_read_state_reset(&sctx->rstate);
3225 sctx->mem = mem;
3226 sctx->rstate.prefix = 8;
3227 sctx->state = NGHTTP3_QPACK_RS_STATE_RICNT;
3228 sctx->opcode = 0;
3229 sctx->stream_id = stream_id;
3230 sctx->ricnt = 0;
3231 sctx->dbase_sign = 0;
3232 sctx->base = 0;
3235 void nghttp3_qpack_stream_context_free(nghttp3_qpack_stream_context *sctx) {
3236 nghttp3_qpack_read_state_free(&sctx->rstate);
3239 void nghttp3_qpack_stream_context_reset(nghttp3_qpack_stream_context *sctx) {
3240 nghttp3_qpack_stream_context_init(sctx, sctx->stream_id, sctx->mem);
3244 nghttp3_qpack_stream_context_get_ricnt(nghttp3_qpack_stream_context *sctx) {
3245 return sctx->ricnt;
3250 nghttp3_qpack_stream_context *sctx,
3268 switch (sctx->state) {
3270 nread = qpack_read_varint(&rfin, &sctx->rstate, p, end);
3283 rv = nghttp3_qpack_decoder_reconstruct_ricnt(decoder, &sctx->ricnt,
3284 sctx->rstate.left);
3289 sctx->state = NGHTTP3_QPACK_RS_STATE_DBASE_SIGN;
3293 sctx->dbase_sign = 1;
3295 sctx->state = NGHTTP3_QPACK_RS_STATE_DBASE;
3296 sctx->rstate.left = 0;
3297 sctx->rstate.prefix = 7;
3298 sctx->rstate.shift = 0;
3301 nread = qpack_read_varint(&rfin, &sctx->rstate, p, end);
3314 if (sctx->dbase_sign) {
3315 if (sctx->ricnt <= sctx->rstate.left) {
3319 sctx->base = sctx->ricnt - sctx->rstate.left - 1;
3321 sctx->base = sctx->ricnt + sctx->rstate.left;
3326 sctx->ricnt, sctx->base, decoder->ctx.next_absidx);
3328 if (sctx->ricnt > decoder->ctx.next_absidx) {
3330 sctx->state = NGHTTP3_QPACK_RS_STATE_BLOCKED;
3335 sctx->state = NGHTTP3_QPACK_RS_STATE_OPCODE;
3336 sctx->rstate.left = 0;
3337 sctx->rstate.shift = 0;
3340 assert(sctx->rstate.left == 0);
3341 assert(sctx->rstate.shift == 0);
3344 sctx->opcode = NGHTTP3_QPACK_RS_OPCODE_INDEXED;
3345 sctx->rstate.dynamic = !((*p) & 0x40);
3346 sctx->rstate.prefix = 6;
3347 sctx->state = NGHTTP3_QPACK_RS_STATE_READ_INDEX;
3350 sctx->opcode = NGHTTP3_QPACK_RS_OPCODE_INDEXED_NAME;
3351 sctx->rstate.never = (*p) & 0x20;
3352 sctx->rstate.dynamic = !((*p) & 0x10);
3353 sctx->rstate.prefix = 4;
3354 sctx->state = NGHTTP3_QPACK_RS_STATE_READ_INDEX;
3357 sctx->opcode = NGHTTP3_QPACK_RS_OPCODE_LITERAL;
3358 sctx->rstate.never = (*p) & 0x10;
3359 sctx->rstate.dynamic = 0;
3360 sctx->rstate.prefix = 3;
3361 sctx->state = NGHTTP3_QPACK_RS_STATE_CHECK_NAME_HUFFMAN;
3364 sctx->opcode = NGHTTP3_QPACK_RS_OPCODE_INDEXED_PB;
3365 sctx->rstate.dynamic = 1;
3366 sctx->rstate.prefix = 4;
3367 sctx->state = NGHTTP3_QPACK_RS_STATE_READ_INDEX;
3370 sctx->opcode = NGHTTP3_QPACK_RS_OPCODE_INDEXED_NAME_PB;
3371 sctx->rstate.never = (*p) & 0x08;
3372 sctx->rstate.dynamic = 1;
3373 sctx->rstate.prefix = 3;
3374 sctx->state = NGHTTP3_QPACK_RS_STATE_READ_INDEX;
3378 nread = qpack_read_varint(&rfin, &sctx->rstate, p, end);
3391 switch (sctx->opcode) {
3393 rv = nghttp3_qpack_decoder_brel2abs(decoder, sctx);
3397 nghttp3_qpack_decoder_emit_indexed(decoder, sctx, nv);
3400 sctx->state = NGHTTP3_QPACK_RS_STATE_OPCODE;
3401 nghttp3_qpack_read_state_reset(&sctx->rstate);
3405 rv = nghttp3_qpack_decoder_pbrel2abs(decoder, sctx);
3409 nghttp3_qpack_decoder_emit_indexed(decoder, sctx, nv);
3412 sctx->state = NGHTTP3_QPACK_RS_STATE_OPCODE;
3413 nghttp3_qpack_read_state_reset(&sctx->rstate);
3417 rv = nghttp3_qpack_decoder_brel2abs(decoder, sctx);
3421 sctx->rstate.prefix = 7;
3422 sctx->state = NGHTTP3_QPACK_RS_STATE_CHECK_VALUE_HUFFMAN;
3425 rv = nghttp3_qpack_decoder_pbrel2abs(decoder, sctx);
3429 sctx->rstate.prefix = 7;
3430 sctx->state = NGHTTP3_QPACK_RS_STATE_CHECK_VALUE_HUFFMAN;
3438 qpack_read_state_check_huffman(&sctx->rstate, *p);
3439 sctx->state = NGHTTP3_QPACK_RS_STATE_READ_NAMELEN;
3440 sctx->rstate.left = 0;
3441 sctx->rstate.shift = 0;
3444 nread = qpack_read_varint(&rfin, &sctx->rstate, p, end);
3457 if (sctx->rstate.left > NGHTTP3_QPACK_MAX_NAMELEN) {
3462 if (sctx->rstate.huffman_encoded) {
3463 sctx->state = NGHTTP3_QPACK_RS_STATE_READ_NAME_HUFFMAN;
3464 nghttp3_qpack_huffman_decode_context_init(&sctx->rstate.huffman_ctx);
3465 rv = nghttp3_rcbuf_new(&sctx->rstate.name,
3466 (size_t)sctx->rstate.left * 2 + 1, mem);
3468 sctx->state = NGHTTP3_QPACK_RS_STATE_READ_NAME;
3469 rv = nghttp3_rcbuf_new(&sctx->rstate.name,
3470 (size_t)sctx->rstate.left + 1, mem);
3476 nghttp3_buf_wrap_init(&sctx->rstate.namebuf, sctx->rstate.name->base,
3477 sctx->rstate.name->len);
3480 nread = qpack_read_huffman_string(&sctx->rstate, &sctx->rstate.namebuf, p,
3490 if (sctx->rstate.left) {
3494 qpack_read_state_terminate_name(&sctx->rstate);
3496 sctx->state = NGHTTP3_QPACK_RS_STATE_CHECK_VALUE_HUFFMAN;
3497 sctx->rstate.prefix = 7;
3500 nread = qpack_read_string(&sctx->rstate, &sctx->rstate.namebuf, p, end);
3508 if (sctx->rstate.left) {
3512 qpack_read_state_terminate_name(&sctx->rstate);
3514 sctx->state = NGHTTP3_QPACK_RS_STATE_CHECK_VALUE_HUFFMAN;
3515 sctx->rstate.prefix = 7;
3518 qpack_read_state_check_huffman(&sctx->rstate, *p);
3519 sctx->state = NGHTTP3_QPACK_RS_STATE_READ_VALUELEN;
3520 sctx->rstate.left = 0;
3521 sctx->rstate.shift = 0;
3524 nread = qpack_read_varint(&rfin, &sctx->rstate, p, end);
3537 if (sctx->rstate.left > NGHTTP3_QPACK_MAX_VALUELEN) {
3542 if (sctx->rstate.huffman_encoded) {
3543 sctx->state = NGHTTP3_QPACK_RS_STATE_READ_VALUE_HUFFMAN;
3544 nghttp3_qpack_huffman_decode_context_init(&sctx->rstate.huffman_ctx);
3545 rv = nghttp3_rcbuf_new(&sctx->rstate.value,
3546 (size_t)sctx->rstate.left * 2 + 1, mem);
3548 sctx->state = NGHTTP3_QPACK_RS_STATE_READ_VALUE;
3549 rv = nghttp3_rcbuf_new(&sctx->rstate.value,
3550 (size_t)sctx->rstate.left + 1, mem);
3556 nghttp3_buf_wrap_init(&sctx->rstate.valuebuf, sctx->rstate.value->base,
3557 sctx->rstate.value->len);
3563 nread = qpack_read_huffman_string(&sctx->rstate, &sctx->rstate.valuebuf,
3573 if (sctx->rstate.left) {
3577 qpack_read_state_terminate_value(&sctx->rstate);
3579 switch (sctx->opcode) {
3582 rv = nghttp3_qpack_decoder_emit_indexed_name(decoder, sctx, nv);
3589 nghttp3_qpack_decoder_emit_literal(decoder, sctx, nv);
3598 sctx->state = NGHTTP3_QPACK_RS_STATE_OPCODE;
3599 nghttp3_qpack_read_state_reset(&sctx->rstate);
3603 nread = qpack_read_string(&sctx->rstate, &sctx->rstate.valuebuf, p, end);
3611 if (sctx->rstate.left) {
3615 qpack_read_state_terminate_value(&sctx->rstate);
3617 switch (sctx->opcode) {
3620 rv = nghttp3_qpack_decoder_emit_indexed_name(decoder, sctx, nv);
3627 nghttp3_qpack_decoder_emit_literal(decoder, sctx, nv);
3636 sctx->state = NGHTTP3_QPACK_RS_STATE_OPCODE;
3637 nghttp3_qpack_read_state_reset(&sctx->rstate);
3641 if (sctx->ricnt > decoder->ctx.next_absidx) {
3646 sctx->state = NGHTTP3_QPACK_RS_STATE_OPCODE;
3647 nghttp3_qpack_read_state_reset(&sctx->rstate);
3654 if (sctx->state != NGHTTP3_QPACK_RS_STATE_OPCODE) {
3661 if (sctx->ricnt) {
3662 rv = nghttp3_qpack_decoder_write_section_ack(decoder, sctx);
3683 nghttp3_qpack_decoder *decoder, const nghttp3_qpack_stream_context *sctx) {
3693 dbuf, nghttp3_qpack_put_varint_len((uint64_t)sctx->stream_id, 7),
3701 dbuf->last = nghttp3_qpack_put_varint(p, (uint64_t)sctx->stream_id, 7);
3703 if (decoder->written_icnt < sctx->ricnt) {
3704 decoder->written_icnt = sctx->ricnt;
3833 nghttp3_qpack_stream_context *sctx) {
3834 nghttp3_qpack_read_state *rstate = &sctx->rstate;
3838 rstate->dynamic, rstate->left, sctx->base, decoder->ctx.next_absidx);
3841 if (sctx->base < rstate->left + 1) {
3844 rstate->absidx = sctx->base - rstate->left - 1;
3846 if (rstate->absidx >= sctx->ricnt) {
3860 nghttp3_qpack_stream_context *sctx) {
3861 nghttp3_qpack_read_state *rstate = &sctx->rstate;
3864 rstate->left, sctx->base, decoder->ctx.next_absidx);
3868 rstate->absidx = rstate->left + sctx->base;
3870 if (rstate->absidx >= sctx->ricnt) {
3882 nghttp3_qpack_stream_context *sctx,
3884 const nghttp3_qpack_static_header *shd = &stable[sctx->rstate.absidx];
3895 nghttp3_qpack_stream_context *sctx,
3898 nghttp3_qpack_context_dtable_get(&decoder->ctx, sctx->rstate.absidx);
3907 nghttp3_qpack_stream_context *sctx,
3910 sctx->rstate.dynamic ? "dynamic" : "static", sctx->rstate.absidx);
3912 if (sctx->rstate.dynamic) {
3913 qpack_decoder_emit_dynamic_indexed(decoder, sctx, nv);
3915 qpack_decoder_emit_static_indexed(decoder, sctx, nv);
3921 nghttp3_qpack_stream_context *sctx,
3923 const nghttp3_qpack_static_header *shd = &stable[sctx->rstate.absidx];
3927 nv->value = sctx->rstate.value;
3930 sctx->rstate.never ? NGHTTP3_NV_FLAG_NEVER_INDEX : NGHTTP3_NV_FLAG_NONE;
3932 sctx->rstate.value = NULL;
3937 nghttp3_qpack_stream_context *sctx,
3943 if (qpack_decoder_validate_index(decoder, &sctx->rstate) != 0) {
3947 ent = nghttp3_qpack_context_dtable_get(&decoder->ctx, sctx->rstate.absidx);
3950 nv->value = sctx->rstate.value;
3953 sctx->rstate.never ? NGHTTP3_NV_FLAG_NEVER_INDEX : NGHTTP3_NV_FLAG_NONE;
3957 sctx->rstate.value = NULL;
3963 nghttp3_qpack_stream_context *sctx,
3968 sctx->rstate.dynamic ? "dynamic" : "static", sctx->rstate.absidx,
3969 (int)sctx->rstate.value->len, sctx->rstate.value->base);
3971 if (sctx->rstate.dynamic) {
3972 return qpack_decoder_emit_dynamic_indexed_name(decoder, sctx, nv);
3975 qpack_decoder_emit_static_indexed_name(decoder, sctx, nv);
3981 nghttp3_qpack_stream_context *sctx,
3986 (int)sctx->rstate.name->len, sctx->rstate.name->base,
3987 (int)sctx->rstate.value->len, sctx->rstate.value->base);
3989 nv->name = sctx->rstate.name;
3990 nv->value = sctx->rstate.value;
3993 sctx->rstate.never ? NGHTTP3_NV_FLAG_NEVER_INDEX : NGHTTP3_NV_FLAG_NONE;
3995 sctx->rstate.name = NULL;
3996 sctx->rstate.value = NULL;
4050 void nghttp3_qpack_stream_context_del(nghttp3_qpack_stream_context *sctx) {
4053 if (sctx == NULL) {
4057 mem = sctx->mem;
4059 nghttp3_qpack_stream_context_free(sctx);
4060 nghttp3_mem_free(mem, sctx);