mirror of
http://git.haproxy.org/git/haproxy.git
synced 2026-02-18 05:07:05 +02:00
Previous commit switch to small buffers for HTTP/3 HEADERS emission. This ensures that several parallel streams can allocate their own buffer without hitting the connection buffer limit based now on the congestion window size. However, this prevents the transmission of responses with uncommonly large headers. Indeed, if all headers cannot be encoded in a single buffer, an error is reported which cause the whole connection closure. Adjust this by implementing a realloc API exposed by QUIC MUX. This allows application layer to switch from a small to a default buffer and restart its processing. This guarantees that again headers not longer than bufsize can be properly transferred.
25 lines
942 B
C
25 lines
942 B
C
#ifndef _HAPROXY_QUIC_STREAM_H_
|
|
#define _HAPROXY_QUIC_STREAM_H_
|
|
|
|
#ifdef USE_QUIC
|
|
|
|
#include <haproxy/mux_quic-t.h>
|
|
#include <haproxy/quic_stream-t.h>
|
|
|
|
struct quic_conn;
|
|
|
|
struct qc_stream_desc *qc_stream_desc_new(uint64_t id, enum qcs_type, void *ctx,
|
|
struct quic_conn *qc);
|
|
void qc_stream_desc_release(struct qc_stream_desc *stream, uint64_t final_size);
|
|
int qc_stream_desc_ack(struct qc_stream_desc **stream, size_t offset, size_t len, int fin);
|
|
void qc_stream_desc_free(struct qc_stream_desc *stream, int closing);
|
|
|
|
struct buffer *qc_stream_buf_get(struct qc_stream_desc *stream);
|
|
struct buffer *qc_stream_buf_alloc(struct qc_stream_desc *stream,
|
|
uint64_t offset, int small);
|
|
struct buffer *qc_stream_buf_realloc(struct qc_stream_desc *stream);
|
|
void qc_stream_buf_release(struct qc_stream_desc *stream);
|
|
|
|
#endif /* USE_QUIC */
|
|
#endif /* _HAPROXY_QUIC_STREAM_H_ */
|