39#define TLS_DATA_MAX (16*1024)
45#define WRITE_SIZE_INITIAL 1300
57#define WRITE_SIZE_MAX (TLS_DATA_MAX)
59#define BUF_REMAIN ((apr_size_t)(bmax-off))
65 const char *line =
"(null)";
95 const char *
btype =
"data";
125 (
long)(
b->length == ((
apr_size_t)-1)? -1UL :
b->length));
135#define C1_IO_BB_LOG(c, stream_id, level, tag, bb) \
136 if (APLOG_C_IS_LEVEL(c, level)) { \
137 h2_c1_io_bb_log((c), (stream_id), (level), (tag), (bb)); \
170 "h2_c1_io(%ld): init, buffering=%d, warmup_size=%ld, "
242 "h2_c1_io(%ld): seeing mmap bucket of size %ld, scratch remain=%ld",
271 "h2_c1_io(%ld): recursive call of h2_c1_io_pass. "
272 "Denied to prevent output corruption. This "
273 "points to a bug in the HTTP/2 implementation.",
320 "h2_c1_io(%ld): pass_out brigade %ld bytes",
367 "h2_c1_io(%ld): adding %ld data bytes",
451 H2_SSSN_MSG(session,
"fed %ld bytes to nghttp2, %ld read"),
550 "error reading, terminating"));
Apache Multi-Processing Module library.
const char apr_size_t len
apr_status_t ap_pass_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket)
apr_status_t ap_get_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes)
int ap_ssl_conn_is_ssl(conn_rec *c)
#define AP_BUCKET_IS_EOR(e)
#define APR_STATUS_IS_ECONNABORTED(s)
#define APR_STATUS_IS_ETIMEDOUT(s)
#define APR_STATUS_IS_ECONNRESET(s)
#define APR_STATUS_IS_EAGAIN(s)
#define APR_STATUS_IS_EBADF(s)
#define APR_STATUS_IS_EOF(s)
#define APR_BUCKET_IS_PIPE(e)
#define APR_BUCKET_IS_TRANSIENT(e)
#define APR_BUCKET_IS_FILE(e)
#define APR_BUCKET_IS_FLUSH(e)
#define APR_BUCKET_REMOVE(e)
#define APR_BUCKET_IS_HEAP(e)
#define APR_BRIGADE_LAST(b)
#define APR_BUCKET_IS_SOCKET(e)
#define APR_BUCKET_IS_METADATA(e)
#define APR_BUCKET_IS_IMMORTAL(e)
#define APR_BRIGADE_INSERT_TAIL(b, e)
#define apr_bucket_split(e, point)
#define APR_BUCKET_NEXT(e)
#define APR_BUCKET_BUFF_SIZE
#define APR_BRIGADE_EMPTY(b)
#define APR_BRIGADE_SENTINEL(b)
#define apr_bucket_delete(e)
#define APR_BUCKET_IS_EOS(e)
#define apr_bucket_setaside(e, p)
#define APR_BRIGADE_FIRST(b)
#define APR_BUCKET_IS_POOL(e)
#define apr_bucket_read(e, str, len, block)
#define AP_DEBUG_ASSERT(exp)
apr_seek_where_t apr_off_t * offset
void const char apr_status_t(* cleanup)(void *))
apr_vformatter_buff_t * c
#define H2_BUCKET_IS_H2EOS(e)
static apr_status_t c1_in_feed_bucket(h2_session *session, apr_bucket *b, apr_ssize_t *inout_len)
int h2_c1_io_pending(h2_c1_io *io)
static apr_status_t read_and_feed(h2_session *session)
apr_status_t h2_c1_io_pass(h2_c1_io *io)
#define WRITE_SIZE_INITIAL
apr_status_t h2_c1_io_append(h2_c1_io *io, apr_bucket_brigade *bb)
apr_status_t h2_c1_io_add_data(h2_c1_io *io, const char *data, size_t length)
static apr_status_t pass_output(h2_c1_io *io, int flush)
static apr_size_t assure_scratch_space(h2_c1_io *io)
apr_status_t h2_c1_io_init(h2_c1_io *io, h2_session *session)
static void append_scratch(h2_c1_io *io)
static apr_status_t read_to_scratch(h2_c1_io *io, apr_bucket *b)
static void h2_c1_io_bb_log(conn_rec *c, int stream_id, int level, const char *tag, apr_bucket_brigade *bb)
apr_status_t h2_c1_io_assure_flushed(h2_c1_io *io)
#define C1_IO_BB_LOG(c, stream_id, level, tag, bb)
apr_status_t h2_c1_read(h2_session *session)
static apr_status_t c1_in_feed_brigade(h2_session *session, apr_bucket_brigade *bb, apr_ssize_t *inout_len)
int h2_c1_io_needs_flush(h2_c1_io *io)
apr_int64_t h2_config_sgeti64(server_rec *s, h2_config_var_t var)
int h2_config_sgeti(server_rec *s, h2_config_var_t var)
@ H2_CONF_TLS_WARMUP_SIZE
@ H2_CONF_TLS_COOLDOWN_SECS
void h2_session_event(h2_session *session, h2_session_event_t ev, int err, const char *msg)
void h2_session_dispatch_event(h2_session *session, h2_session_event_t ev, apr_status_t arg, const char *msg)
#define H2_SSSN_LOG(aplogno, s, msg)
@ H2_SESSION_EV_PROTO_ERROR
@ H2_SESSION_EV_INPUT_EXHAUSTED
@ H2_SESSION_EV_INPUT_PENDING
@ H2_SESSION_EV_CONN_ERROR
#define H2_SSSN_MSG(s, msg)
#define h2_util_bb_log(c, sid, level, tag, bb)
Apache connection library.
Multi-Processing Modules functions.
Structure to store things which are per connection.
struct ap_filter_t * input_filters
struct apr_bucket_alloc_t * bucket_alloc
apr_time_t cooldown_usecs
struct h2_session * session
apr_bucket_brigade * output
apr_int64_t bytes_written
apr_off_t flush_threshold
apr_bucket_brigade * bbtmp
apr_size_t max_stream_mem
struct nghttp2_session * ngh2