Apache HTTPD
Classes | Macros | Typedefs | Enumerations | Functions
h2_c2_filter.c File Reference
#include <assert.h>
#include <stdio.h>
#include <apr_date.h>
#include <apr_lib.h>
#include <apr_strings.h>
#include <httpd.h>
#include <http_core.h>
#include <http_log.h>
#include <http_connection.h>
#include <http_protocol.h>
#include <http_request.h>
#include <util_time.h>
#include "h2_private.h"
#include "h2.h"
#include "h2_config.h"
#include "h2_conn_ctx.h"
#include "h2_headers.h"
#include "h2_c1.h"
#include "h2_c2_filter.h"
#include "h2_c2.h"
#include "h2_mplx.h"
#include "h2_request.h"
#include "h2_ws.h"
#include "h2_util.h"

Go to the source code of this file.

Classes

struct  h2_response_parser
 
struct  h2_chunk_filter_t
 

Macros

#define H2_FILTER_LOG(name, c, level, rv, msg, bb)
 

Typedefs

typedef struct h2_response_parser h2_response_parser
 
typedef struct h2_chunk_filter_t h2_chunk_filter_t
 

Enumerations

enum  h2_rp_state_t { H2_RP_STATUS_LINE , H2_RP_HEADER_LINE , H2_RP_DONE }
 

Functions

static int uniq_field_values (void *d, const char *key, const char *val)
 
static void fix_vary (request_rec *r)
 
static h2_headerscreate_response (request_rec *r)
 
static apr_status_t parse_header (h2_response_parser *parser, char *line)
 
static apr_status_t get_line (h2_response_parser *parser, apr_bucket_brigade *bb, char *line, apr_size_t len)
 
static apr_table_tmake_table (h2_response_parser *parser)
 
static apr_status_t pass_response (h2_conn_ctx_t *conn_ctx, ap_filter_t *f, h2_response_parser *parser)
 
static apr_status_t parse_status (h2_response_parser *parser, char *line)
 
static apr_status_t parse_response (h2_response_parser *parser, h2_conn_ctx_t *conn_ctx, ap_filter_t *f, apr_bucket_brigade *bb)
 
apr_status_t h2_c2_filter_catch_h1_out (ap_filter_t *f, apr_bucket_brigade *bb)
 
apr_status_t h2_c2_filter_response_out (ap_filter_t *f, apr_bucket_brigade *bb)
 
static void make_chunk (conn_rec *c, h2_chunk_filter_t *fctx, apr_bucket_brigade *bb, apr_bucket *first, apr_off_t chunk_len, apr_bucket *tail)
 
static int ser_header (void *ctx, const char *name, const char *value)
 
static apr_status_t read_and_chunk (ap_filter_t *f, h2_conn_ctx_t *conn_ctx, apr_read_type_e block)
 
apr_status_t h2_c2_filter_request_in (ap_filter_t *f, apr_bucket_brigade *bb, ap_input_mode_t mode, apr_read_type_e block, apr_off_t readbytes)
 
apr_status_t h2_c2_filter_trailers_out (ap_filter_t *f, apr_bucket_brigade *bb)
 

Macro Definition Documentation

◆ H2_FILTER_LOG

#define H2_FILTER_LOG (   name,
  c,
  level,
  rv,
  msg,
  bb 
)
Value:
do { \
if (APLOG_C_IS_LEVEL((c),(level))) { \
char buffer[4 * 1024]; \
apr_size_t len, bmax = sizeof(buffer)/sizeof(buffer[0]); \
len = h2_util_bb_print(buffer, bmax, "", "", (bb)); \
ap_log_cerror(APLOG_MARK, (level), rv, (c), \
"FILTER[%s]: %s %s", \
(name), (msg), len? buffer : ""); \
} \
} while (0)
const char apr_size_t len
Definition ap_regex.h:187
#define APLOG_MARK
Definition http_log.h:283
#define APLOG_C_IS_LEVEL(c, level)
Definition http_log.h:225
apr_size_t size
char * buffer
apr_vformatter_buff_t * c
Definition apr_lib.h:175
apr_size_t h2_util_bb_print(char *buffer, apr_size_t bmax, const char *tag, const char *sep, apr_bucket_brigade *bb)
Definition h2_util.c:1290
char * name

Definition at line 153 of file h2_c2_filter.c.

Typedef Documentation

◆ h2_chunk_filter_t

Definition at line 789 of file h2_c2_filter.c.

◆ h2_response_parser

Definition at line 382 of file h2_c2_filter.c.

Enumeration Type Documentation

◆ h2_rp_state_t

Enumerator
H2_RP_STATUS_LINE 
H2_RP_HEADER_LINE 
H2_RP_DONE 

Definition at line 376 of file h2_c2_filter.c.

Function Documentation

◆ create_response()

static h2_headers * create_response ( request_rec r)
static

< No proxy

< No proxy

Definition at line 244 of file h2_c2_filter.c.

◆ fix_vary()

static void fix_vary ( request_rec r)
static

Definition at line 224 of file h2_c2_filter.c.

◆ get_line()

static apr_status_t get_line ( h2_response_parser parser,
apr_bucket_brigade bb,
char line,
apr_size_t  len 
)
static

Definition at line 418 of file h2_c2_filter.c.

◆ h2_c2_filter_catch_h1_out()

apr_status_t h2_c2_filter_catch_h1_out ( ap_filter_t f,
apr_bucket_brigade bb 
)

Definition at line 629 of file h2_c2_filter.c.

◆ h2_c2_filter_request_in()

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

Input filter on secondary connections that insert the REQUEST bucket with the request to perform and then removes itself.

Definition at line 916 of file h2_c2_filter.c.

◆ h2_c2_filter_response_out()

apr_status_t h2_c2_filter_response_out ( ap_filter_t f,
apr_bucket_brigade bb 
)

Definition at line 681 of file h2_c2_filter.c.

◆ h2_c2_filter_trailers_out()

apr_status_t h2_c2_filter_trailers_out ( ap_filter_t f,
apr_bucket_brigade bb 
)

Definition at line 1020 of file h2_c2_filter.c.

◆ make_chunk()

static void make_chunk ( conn_rec c,
h2_chunk_filter_t fctx,
apr_bucket_brigade bb,
apr_bucket first,
apr_off_t  chunk_len,
apr_bucket tail 
)
static

Definition at line 792 of file h2_c2_filter.c.

◆ make_table()

static apr_table_t * make_table ( h2_response_parser parser)
static

Definition at line 496 of file h2_c2_filter.c.

◆ parse_header()

static apr_status_t parse_header ( h2_response_parser parser,
char line 
)
static

Definition at line 394 of file h2_c2_filter.c.

◆ parse_response()

static apr_status_t parse_response ( h2_response_parser parser,
h2_conn_ctx_t conn_ctx,
ap_filter_t f,
apr_bucket_brigade bb 
)
static

Definition at line 586 of file h2_c2_filter.c.

◆ parse_status()

static apr_status_t parse_status ( h2_response_parser parser,
char line 
)
static

Definition at line 559 of file h2_c2_filter.c.

◆ pass_response()

static apr_status_t pass_response ( h2_conn_ctx_t conn_ctx,
ap_filter_t f,
h2_response_parser parser 
)
static

Definition at line 529 of file h2_c2_filter.c.

◆ read_and_chunk()

static apr_status_t read_and_chunk ( ap_filter_t f,
h2_conn_ctx_t conn_ctx,
apr_read_type_e  block 
)
static

Definition at line 827 of file h2_c2_filter.c.

◆ ser_header()

static int ser_header ( void *  ctx,
const char name,
const char value 
)
static

Definition at line 820 of file h2_c2_filter.c.

◆ uniq_field_values()

static int uniq_field_values ( void *  d,
const char key,
const char val 
)
static

Definition at line 172 of file h2_c2_filter.c.