diff options
author | Glenn Strauss <gstrauss@gluelogic.com> | 2022-02-08 22:25:45 -0500 |
---|---|---|
committer | Glenn Strauss <gstrauss@gluelogic.com> | 2022-02-19 02:40:37 -0500 |
commit | a162fc70e9bca2b6e0d51c26d9b19ebd110e3578 (patch) | |
tree | 9fae2dd429a6e5cb7ebbf8ab3b10e93304a9e4ab /src/h2.c | |
parent | 14e5404af95321b740c96445b8a43f5c5800bcd8 (diff) | |
download | lighttpd-git-a162fc70e9bca2b6e0d51c26d9b19ebd110e3578.tar.gz |
[core] prep server_tag at startup for h2 resp hdr
Diffstat (limited to 'src/h2.c')
-rw-r--r-- | src/h2.c | 19 |
1 files changed, 9 insertions, 10 deletions
@@ -1877,6 +1877,7 @@ h2_send_hpack (request_st * const r, connection * const con, const char *data, u __attribute_cold__ +__attribute_noinline__ static void h2_log_response_header_lsx(request_st * const r, const lsxpack_header_t * const lsx) { @@ -2075,26 +2076,24 @@ h2_send_headers (request_st * const r, connection * const con) } if (!light_btst(r->resp_htags, HTTP_HEADER_SERVER) && r->conf.server_tag) { - buffer * const b = chunk_buffer_acquire(); + /*("server" is appended after '\0' in r->conf.server_tag at startup)*/ const uint32_t vlen = buffer_clen(r->conf.server_tag); - buffer_append_str2(b, CONST_STR_LEN("server: "), - r->conf.server_tag->ptr, vlen); alen += 6+vlen+4; - if (log_response_header) - h2_log_response_header(r, (int)6+vlen+2, b->ptr); - memset(&lsx, 0, sizeof(lsxpack_header_t)); - lsx.buf = b->ptr; - lsx.name_offset = 0; + lsx.buf = r->conf.server_tag->ptr; + lsx.name_offset = vlen+1; lsx.name_len = 6; - lsx.val_offset = 8; + lsx.val_offset = 0; lsx.val_len = vlen; lsx.hpack_index = LSHPACK_HDR_SERVER; + + if (log_response_header) + h2_log_response_header_lsx(r, &lsx); + unsigned char * const dst_in = dst; dst = lshpack_enc_encode(encoder, dst, dst_end, &lsx); - chunk_buffer_release(b); if (dst == dst_in) { h2_send_rst_stream(r, con, H2_E_INTERNAL_ERROR); return; |