36extern module AP_MODULE_DECLARE_DATA tls_module;
41 void *userdata,
unsigned char *
buf,
size_t n,
size_t *
out_n)
75 "read_tls_to_rustls, get data from network, block=%d",
block);
88 "read_tls_to_rustls, EOS");
129 else if (
d.len == 0) {
146 "processing TLS data: [%d] %s", (
int)
rr,
err_descr);
158 "read_tls_to_rustls, passed %ld bytes to rustls", (
long)
passed);
397 "tls_filter_conn_input, server=%s, mode=%d, block=%d, readbytes=%ld",
407#if AP_MODULE_MAGIC_AT_LEAST(20200420, 1)
439 "tls_filter_conn_input: got %ld plain bytes from rustls", (
long)rlen);
499 "tls_filter_conn_input: [%d] %s", (
int)
rr,
err_descr);
503 "tls_filter_conn_input: no data available");
507 "tls_filter_conn_input");
511 "tls_filter_conn_input: passed %ld bytes", (
long)
passed);
514#if AP_MODULE_MAGIC_AT_LEAST(20200420, 1)
523 void *userdata,
const unsigned char *
buf,
size_t n,
size_t *
out_n)
543 "tls_write_callback: %ld bytes", (
long)
n);
565 "tls_write_vectored_callback: %ld bytes in %d slices", (
long)
n, (
int)
count);
569#define TLS_WRITE_VECTORED 1
631 (
const unsigned char*)
buf,
len, &written);
640 "fout_pass_buf_to_rustls: not read by rustls at all");
649 "fout_pass_buf_to_tls to rustls: [%d] %s", (
int)
rr,
err_descr);
661 "fout_pass_all_to_tls: %ld plain bytes written to rustls",
694 if (
b->length == 0) {
777 else if (
b->length == 0) {
791#define TLS_FILE_CHUNK_SIZE 4 * TLS_PREF_PLAIN_CHUNK_SIZE
855 "write_bucket_to_rustls: [%d] %s", (
int)
rr,
err_descr);
881 "tls_filter_conn_output: aborted conn");
892 "tls_filter_conn_output: tls session is already done");
918 "tls_filter_conn_output: [%d] %s", (
int)
rr,
err_descr);
922 "tls_filter_conn_output: done");
937 "tls_filter_pre_conn_init on %s",
c->base_server->server_hostname);
1004 "tls_filter_conn_init on %s, triggering handshake",
c->base_server->server_hostname);
const char apr_size_t len
Small object cache provider interface.
APR general purpose library routines.
apr_size_t const unsigned char unsigned int unsigned int d
#define APLOG_USE_MODULE(foo)
#define AP_BUCKET_IS_EOC(e)
apr_status_t ap_pass_brigade(ap_filter_t *filter, apr_bucket_brigade *bucket)
ap_filter_t * ap_add_input_filter(const char *name, void *ctx, request_rec *r, conn_rec *c)
ap_filter_rec_t * ap_register_output_filter(const char *name, ap_out_filter_func filter_func, ap_init_filter_func filter_init, ap_filter_type ftype)
ap_filter_t * ap_add_output_filter(const char *name, void *ctx, request_rec *r, conn_rec *c)
apr_status_t ap_filter_rec_t * ap_register_input_filter(const char *name, ap_in_filter_func filter_func, ap_init_filter_func filter_init, ap_filter_type ftype)
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)
const unsigned char * buf
#define APR_STATUS_IS_EAGAIN(s)
#define APR_STATUS_IS_EOF(s)
#define APR_BUCKET_IS_FILE(e)
#define APR_BUCKET_REMOVE(e)
#define APR_BUCKET_IS_METADATA(e)
#define APR_BRIGADE_INSERT_TAIL(b, e)
#define apr_bucket_split(e, point)
#define APR_BRIGADE_CONCAT(a, b)
#define APR_BUCKET_BUFF_SIZE
#define APR_BRIGADE_EMPTY(b)
#define apr_bucket_delete(e)
#define APR_BUCKET_IS_EOS(e)
#define APR_BRIGADE_FIRST(b)
#define apr_bucket_read(e, str, len, block)
apr_dbd_transaction_t int mode
void * ap_calloc(size_t nelem, size_t size) __attribute__((malloc))
const char int apr_pool_t * pool
#define APR_FROM_OS_ERROR(e)
#define APR_TO_OS_ERROR(e)
apr_seek_where_t apr_off_t * offset
void const char apr_status_t(* cleanup)(void *))
apr_vformatter_buff_t * c
#define apr_pcalloc(p, size)
Apache connection library.
The representation of a filter chain.
apr_bucket_alloc_t * bucket_alloc
Structure to store things which are per connection.
struct apr_bucket_alloc_t * bucket_alloc
struct tls_filter_ctx_t * filter_ctx
rustls_connection * rustls_connection
const char * last_error_descr
apr_bucket_brigade * fout_tls_bb
apr_bucket_brigade * fin_plain_bb
apr_off_t fout_bytes_in_rustls
apr_size_t fin_max_in_rustls
apr_read_type_e fin_block
apr_size_t fout_buf_plain_len
apr_size_t fout_max_in_rustls
apr_bucket_brigade * fin_tls_buffer_bb
apr_off_t fout_bytes_in_tls_bb
apr_size_t fout_buf_plain_size
apr_off_t fin_bytes_in_rustls
apr_size_t fout_auto_flush_size
apr_bucket_brigade * fin_tls_bb
apr_status_t tls_core_conn_post_handshake(conn_rec *c)
apr_status_t tls_core_conn_init(conn_rec *c)
apr_status_t tls_core_error(conn_rec *c, rustls_result rr, const char **perrstr)
int tls_core_pre_conn_init(conn_rec *c)
tls_conf_conn_t * tls_conf_conn_get(conn_rec *c)
apr_status_t tls_core_conn_seen_client_hello(conn_rec *c)
@ TLS_CONN_ST_CLIENT_HELLO
static apr_status_t filter_conn_input(ap_filter_t *f, apr_bucket_brigade *bb, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes)
static rustls_io_result tls_write_vectored_callback(void *userdata, const rustls_iovec *riov, size_t count, size_t *out_n)
static apr_status_t fout_add_bucket_to_tls(tls_filter_ctx_t *fctx, apr_bucket *b)
static apr_status_t filter_conn_output(ap_filter_t *f, apr_bucket_brigade *bb)
#define TLS_FILE_CHUNK_SIZE
static apr_status_t progress_tls_atleast_to(tls_filter_ctx_t *fctx, tls_conn_state_t state)
static apr_status_t fout_pass_all_to_net(tls_filter_ctx_t *fctx, int flush)
static apr_status_t filter_do_handshake(tls_filter_ctx_t *fctx)
static apr_status_t filter_abort(tls_filter_ctx_t *fctx)
void tls_filter_register(apr_pool_t *pool)
static apr_status_t read_tls_to_rustls(tls_filter_ctx_t *fctx, apr_size_t len, apr_read_type_e block, int errors_expected)
static apr_status_t fout_pass_buf_to_rustls(tls_filter_ctx_t *fctx, const char *buf, apr_size_t len)
static apr_status_t fout_pass_tls_to_net(tls_filter_ctx_t *fctx)
static apr_status_t fout_pass_rustls_to_tls(tls_filter_ctx_t *fctx)
static apr_status_t fout_append_plain(tls_filter_ctx_t *fctx, apr_bucket *b)
static apr_status_t fout_add_bucket_to_plain(tls_filter_ctx_t *fctx, apr_bucket *b)
void tls_filter_conn_init(conn_rec *c)
static apr_status_t filter_send_client_hello(tls_filter_ctx_t *fctx)
int tls_filter_pre_conn_init(conn_rec *c)
#define TLS_WRITE_VECTORED
static apr_status_t fout_pass_all_to_tls(tls_filter_ctx_t *fctx)
static rustls_io_result tls_read_callback(void *userdata, unsigned char *buf, size_t n, size_t *out_n)
static apr_status_t filter_recv_client_hello(tls_filter_ctx_t *fctx)
static rustls_io_result tls_write_callback(void *userdata, const unsigned char *buf, size_t n, size_t *out_n)
#define TLS_PREF_PLAIN_CHUNK_SIZE
apr_status_t tls_util_brigade_transfer(apr_bucket_brigade *dest, apr_bucket_brigade *src, apr_off_t length, apr_off_t *pnout)
apr_status_t tls_util_brigade_copy(apr_bucket_brigade *dest, apr_bucket_brigade *src, apr_off_t length, apr_off_t *pnout)
apr_status_t tls_util_brigade_split_line(apr_bucket_brigade *dest, apr_bucket_brigade *src, apr_read_type_e block, apr_off_t length, apr_off_t *pnout)
#define tls_util_bb_log(c, level, tag, bb)
ap_input_mode_t
input filtering modes