Apache HTTPD
Classes | Macros | Functions | Variables
ssl_engine_io.c File Reference
#include "ssl_private.h"
#include "apr_date.h"

Go to the source code of this file.

Classes

struct  ssl_filter_ctx_t
 
struct  bio_filter_out_ctx_t
 
struct  char_buffer_t
 
struct  bio_filter_in_ctx_t
 
struct  coalesce_ctx
 
struct  modssl_buffer_ctx
 

Macros

#define HTTP_ON_HTTPS_PORT    "GET / HTTP/1.0" CRLF
 
#define HTTP_ON_HTTPS_PORT_BUCKET(alloc)
 
#define MODSSL_ERROR_HTTP_ON_HTTPS   (APR_OS_START_USERERR + 0)
 
#define MODSSL_ERROR_BAD_GATEWAY   (APR_OS_START_USERERR + 1)
 
#define COALESCE_BYTES   (AP_IOBUFSIZE)
 
#define DUMP_WIDTH   16
 
#define MODSSL_IO_DUMP_MAX   APR_UINT16_MAX
 

Functions

int ssl_run_proxy_post_handshake (conn_rec *c, SSL *ssl)
 
static bio_filter_out_ctx_tbio_filter_out_ctx_new (ssl_filter_ctx_t *filter_ctx, conn_rec *c)
 
static int bio_filter_out_pass (bio_filter_out_ctx_t *outctx)
 
static int bio_filter_out_flush (BIO *bio)
 
static int bio_filter_create (BIO *bio)
 
static int bio_filter_destroy (BIO *bio)
 
static int bio_filter_out_read (BIO *bio, char *out, int outl)
 
static int bio_filter_out_write (BIO *bio, const char *in, int inl)
 
static long bio_filter_out_ctrl (BIO *bio, int cmd, long num, void *ptr)
 
static int bio_filter_out_gets (BIO *bio, char *buf, int size)
 
static int bio_filter_out_puts (BIO *bio, const char *str)
 
static int char_buffer_read (char_buffer_t *buffer, char *in, int inl)
 
static int char_buffer_write (char_buffer_t *buffer, char *in, int inl)
 
static apr_status_t brigade_consume (apr_bucket_brigade *bb, apr_read_type_e block, char *c, apr_size_t *len)
 
static int bio_filter_in_read (BIO *bio, char *in, int inlen)
 
static int bio_filter_in_write (BIO *bio, const char *in, int inl)
 
static int bio_filter_in_puts (BIO *bio, const char *str)
 
static int bio_filter_in_gets (BIO *bio, char *buf, int size)
 
static long bio_filter_in_ctrl (BIO *bio, int cmd, long num, void *ptr)
 
static apr_status_t ssl_io_input_read (bio_filter_in_ctx_t *inctx, char *buf, apr_size_t *len)
 
static apr_status_t ssl_io_input_getline (bio_filter_in_ctx_t *inctx, char *buf, apr_size_t *len)
 
static apr_status_t ssl_filter_write (ap_filter_t *f, const char *data, apr_size_t len)
 
static void ssl_io_filter_disable (SSLConnRec *sslconn, bio_filter_in_ctx_t *inctx)
 
static apr_status_t ssl_io_filter_error (bio_filter_in_ctx_t *inctx, apr_bucket_brigade *bb, apr_status_t status, int is_init)
 
static void ssl_filter_io_shutdown (ssl_filter_ctx_t *filter_ctx, conn_rec *c, int abortive)
 
static apr_status_t ssl_io_filter_cleanup (void *data)
 
static apr_status_t ssl_io_filter_handshake (ssl_filter_ctx_t *filter_ctx)
 
static apr_status_t ssl_io_filter_input (ap_filter_t *f, apr_bucket_brigade *bb, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes)
 
static apr_status_t ssl_io_filter_coalesce (ap_filter_t *f, apr_bucket_brigade *bb)
 
static apr_status_t ssl_io_filter_output (ap_filter_t *f, apr_bucket_brigade *bb)
 
int ssl_io_buffer_fill (request_rec *r, apr_size_t maxlen)
 
static apr_status_t ssl_io_filter_buffer (ap_filter_t *f, apr_bucket_brigade *bb, ap_input_mode_t mode, apr_read_type_e block, apr_off_t bytes)
 
static void ssl_io_input_add_filter (ssl_filter_ctx_t *filter_ctx, conn_rec *c, request_rec *r, SSL *ssl)
 
void ssl_io_filter_init (conn_rec *c, request_rec *r, SSL *ssl)
 
void ssl_io_filter_register (apr_pool_t *p)
 
static void ssl_io_data_dump (conn_rec *c, server_rec *s, const char *b, int len)
 
static long modssl_io_cb (BIO *bio, int cmd, const char *argp, int argi, long argl, long rc)
 
static APR_INLINE void set_bio_callback (BIO *bio, void *arg)
 
void modssl_set_io_callbacks (SSL *ssl, conn_rec *c, server_rec *s)
 

Variables

static BIO_METHOD bio_filter_out_method
 
static BIO_METHOD bio_filter_in_method
 
static const char ssl_io_filter [] = "SSL/TLS Filter"
 
static const char ssl_io_buffer [] = "SSL/TLS Buffer"
 
static const char ssl_io_coalesce [] = "SSL/TLS Coalescing Filter"
 

Macro Definition Documentation

◆ COALESCE_BYTES

#define COALESCE_BYTES   (AP_IOBUFSIZE)

Definition at line 1721 of file ssl_engine_io.c.

◆ DUMP_WIDTH

#define DUMP_WIDTH   16

Definition at line 2310 of file ssl_engine_io.c.

◆ HTTP_ON_HTTPS_PORT

#define HTTP_ON_HTTPS_PORT    "GET / HTTP/1.0" CRLF

Definition at line 976 of file ssl_engine_io.c.

◆ HTTP_ON_HTTPS_PORT_BUCKET

#define HTTP_ON_HTTPS_PORT_BUCKET (   alloc)
Value:
sizeof(HTTP_ON_HTTPS_PORT) - 1, \
alloc)
apr_size_t size
#define HTTP_ON_HTTPS_PORT

Definition at line 979 of file ssl_engine_io.c.

◆ MODSSL_ERROR_BAD_GATEWAY

#define MODSSL_ERROR_BAD_GATEWAY   (APR_OS_START_USERERR + 1)

Definition at line 990 of file ssl_engine_io.c.

◆ MODSSL_ERROR_HTTP_ON_HTTPS

#define MODSSL_ERROR_HTTP_ON_HTTPS   (APR_OS_START_USERERR + 0)

Definition at line 986 of file ssl_engine_io.c.

◆ MODSSL_IO_DUMP_MAX

#define MODSSL_IO_DUMP_MAX   APR_UINT16_MAX

Definition at line 2371 of file ssl_engine_io.c.

Function Documentation

◆ bio_filter_create()

static int bio_filter_create ( BIO bio)
static

Definition at line 165 of file ssl_engine_io.c.

◆ bio_filter_destroy()

static int bio_filter_destroy ( BIO bio)
static

Definition at line 181 of file ssl_engine_io.c.

◆ bio_filter_in_ctrl()

static long bio_filter_in_ctrl ( BIO bio,
int  cmd,
long  num,
void *  ptr 
)
static

Definition at line 576 of file ssl_engine_io.c.

◆ bio_filter_in_gets()

static int bio_filter_in_gets ( BIO bio,
char buf,
int  size 
)
static

Definition at line 567 of file ssl_engine_io.c.

◆ bio_filter_in_puts()

static int bio_filter_in_puts ( BIO bio,
const char str 
)
static

Definition at line 558 of file ssl_engine_io.c.

◆ bio_filter_in_read()

static int bio_filter_in_read ( BIO bio,
char in,
int  inlen 
)
static

Definition at line 464 of file ssl_engine_io.c.

◆ bio_filter_in_write()

static int bio_filter_in_write ( BIO bio,
const char in,
int  inl 
)
static

Definition at line 549 of file ssl_engine_io.c.

◆ bio_filter_out_ctrl()

static long bio_filter_out_ctrl ( BIO bio,
int  cmd,
long  num,
void *  ptr 
)
static

Definition at line 254 of file ssl_engine_io.c.

◆ bio_filter_out_ctx_new()

static bio_filter_out_ctx_t * bio_filter_out_ctx_new ( ssl_filter_ctx_t filter_ctx,
conn_rec c 
)
static

Definition at line 120 of file ssl_engine_io.c.

◆ bio_filter_out_flush()

static int bio_filter_out_flush ( BIO bio)
static

Definition at line 149 of file ssl_engine_io.c.

◆ bio_filter_out_gets()

static int bio_filter_out_gets ( BIO bio,
char buf,
int  size 
)
static

Definition at line 298 of file ssl_engine_io.c.

◆ bio_filter_out_pass()

static int bio_filter_out_pass ( bio_filter_out_ctx_t outctx)
static

Definition at line 134 of file ssl_engine_io.c.

◆ bio_filter_out_puts()

static int bio_filter_out_puts ( BIO bio,
const char str 
)
static

Definition at line 308 of file ssl_engine_io.c.

◆ bio_filter_out_read()

static int bio_filter_out_read ( BIO bio,
char out,
int  outl 
)
static

Definition at line 193 of file ssl_engine_io.c.

◆ bio_filter_out_write()

static int bio_filter_out_write ( BIO bio,
const char in,
int  inl 
)
static

Definition at line 203 of file ssl_engine_io.c.

◆ brigade_consume()

static apr_status_t brigade_consume ( apr_bucket_brigade bb,
apr_read_type_e  block,
char c,
apr_size_t len 
)
static

Definition at line 381 of file ssl_engine_io.c.

◆ char_buffer_read()

static int char_buffer_read ( char_buffer_t buffer,
char in,
int  inl 
)
static

Definition at line 348 of file ssl_engine_io.c.

◆ char_buffer_write()

static int char_buffer_write ( char_buffer_t buffer,
char in,
int  inl 
)
static

Definition at line 371 of file ssl_engine_io.c.

◆ modssl_io_cb()

static long modssl_io_cb ( BIO bio,
int  cmd,
const char argp,
int  argi,
long  argl,
long  rc 
)
static

Definition at line 2378 of file ssl_engine_io.c.

◆ set_bio_callback()

static APR_INLINE void set_bio_callback ( BIO bio,
void *  arg 
)
static

Definition at line 2459 of file ssl_engine_io.c.

◆ ssl_filter_io_shutdown()

static void ssl_filter_io_shutdown ( ssl_filter_ctx_t filter_ctx,
conn_rec c,
int  abortive 
)
static

Definition at line 1059 of file ssl_engine_io.c.

◆ ssl_filter_write()

static apr_status_t ssl_filter_write ( ap_filter_t f,
const char data,
apr_size_t  len 
)
static

Definition at line 881 of file ssl_engine_io.c.

◆ ssl_io_data_dump()

static void ssl_io_data_dump ( conn_rec c,
server_rec s,
const char b,
int  len 
)
static

Definition at line 2312 of file ssl_engine_io.c.

◆ ssl_io_filter_buffer()

static apr_status_t ssl_io_filter_buffer ( ap_filter_t f,
apr_bucket_brigade bb,
ap_input_mode_t  mode,
apr_read_type_e  block,
apr_off_t  bytes 
)
static

Definition at line 2127 of file ssl_engine_io.c.

◆ ssl_io_filter_cleanup()

static apr_status_t ssl_io_filter_cleanup ( void *  data)
static

Definition at line 1172 of file ssl_engine_io.c.

◆ ssl_io_filter_coalesce()

static apr_status_t ssl_io_filter_coalesce ( ap_filter_t f,
apr_bucket_brigade bb 
)
static

Definition at line 1728 of file ssl_engine_io.c.

◆ ssl_io_filter_disable()

static void ssl_io_filter_disable ( SSLConnRec sslconn,
bio_filter_in_ctx_t inctx 
)
static

Definition at line 992 of file ssl_engine_io.c.

◆ ssl_io_filter_error()

static apr_status_t ssl_io_filter_error ( bio_filter_in_ctx_t inctx,
apr_bucket_brigade bb,
apr_status_t  status,
int  is_init 
)
static

Definition at line 1001 of file ssl_engine_io.c.

◆ ssl_io_filter_handshake()

static apr_status_t ssl_io_filter_handshake ( ssl_filter_ctx_t filter_ctx)
static

< Module has handled this stage.

< Module has handled this stage.

< Module declines to handle

Definition at line 1197 of file ssl_engine_io.c.

◆ ssl_io_filter_input()

static apr_status_t ssl_io_filter_input ( ap_filter_t f,
apr_bucket_brigade bb,
ap_input_mode_t  mode,
apr_read_type_e  block,
apr_off_t  readbytes 
)
static

Definition at line 1569 of file ssl_engine_io.c.

◆ ssl_io_filter_output()

static apr_status_t ssl_io_filter_output ( ap_filter_t f,
apr_bucket_brigade bb 
)
static

Definition at line 1930 of file ssl_engine_io.c.

◆ ssl_io_input_add_filter()

static void ssl_io_input_add_filter ( ssl_filter_ctx_t filter_ctx,
conn_rec c,
request_rec r,
SSL ssl 
)
static

Definition at line 2222 of file ssl_engine_io.c.

◆ ssl_io_input_getline()

static apr_status_t ssl_io_input_getline ( bio_filter_in_ctx_t inctx,
char buf,
apr_size_t len 
)
static

Definition at line 826 of file ssl_engine_io.c.

◆ ssl_io_input_read()

static apr_status_t ssl_io_input_read ( bio_filter_in_ctx_t inctx,
char buf,
apr_size_t len 
)
static

Definition at line 654 of file ssl_engine_io.c.

Variable Documentation

◆ bio_filter_in_method

BIO_METHOD bio_filter_in_method
static
Initial value:
= {
"APR input filter",
}
return NULL
Definition mod_so.c:359
static int bio_filter_in_write(BIO *bio, const char *in, int inl)
static int bio_filter_destroy(BIO *bio)
static int bio_filter_create(BIO *bio)
static long bio_filter_in_ctrl(BIO *bio, int cmd, long num, void *ptr)
static int bio_filter_in_puts(BIO *bio, const char *str)
static int bio_filter_in_gets(BIO *bio, char *buf, int size)
static int bio_filter_in_read(BIO *bio, char *in, int inlen)

Definition at line 608 of file ssl_engine_io.c.

◆ bio_filter_out_method

BIO_METHOD bio_filter_out_method
static
Initial value:
= {
"APR output filter",
}
static int bio_filter_out_write(BIO *bio, const char *in, int inl)
static int bio_filter_out_puts(BIO *bio, const char *str)
static int bio_filter_out_read(BIO *bio, char *out, int outl)
static long bio_filter_out_ctrl(BIO *bio, int cmd, long num, void *ptr)
static int bio_filter_out_gets(BIO *bio, char *buf, int size)

Definition at line 595 of file ssl_engine_io.c.

◆ ssl_io_buffer

const char ssl_io_buffer[] = "SSL/TLS Buffer"
static

Definition at line 1051 of file ssl_engine_io.c.

◆ ssl_io_coalesce

const char ssl_io_coalesce[] = "SSL/TLS Coalescing Filter"
static

Definition at line 1052 of file ssl_engine_io.c.

◆ ssl_io_filter

const char ssl_io_filter[] = "SSL/TLS Filter"
static

Definition at line 1050 of file ssl_engine_io.c.