Apache HTTPD
Classes | Macros | Functions | Variables
h2_proxy_util.c File Reference
#include <assert.h>
#include <apr_lib.h>
#include <apr_strings.h>
#include <apr_thread_mutex.h>
#include <apr_thread_cond.h>
#include <httpd.h>
#include <http_core.h>
#include <http_log.h>
#include <http_request.h>
#include <mod_proxy.h>
#include <nghttp2/nghttp2.h>
#include "h2.h"
#include "h2_proxy_util.h"

Go to the source code of this file.

Classes

struct  h2_proxy_ihash_t
 
struct  iter_ctx
 
struct  collect_ctx
 
struct  icollect_ctx
 
struct  literal
 
struct  h1_ctx
 
struct  link_ctx
 
struct  h2_proxy_fifo
 

Macros

#define H2_HD_MATCH_LIT_CS(l, name)    ((strlen(name) == sizeof(l) - 1) && !apr_strnatcasecmp(l, name))
 
#define NV_ADD_LIT_CS(nv, k, v)   add_header(nv, k, sizeof(k) - 1, v, strlen(v))
 
#define NV_ADD_CS_CS(nv, k, v)   add_header(nv, k, strlen(k), v, strlen(v))
 
#define H2_DEF_LITERAL(n)   { (n), (sizeof(n)-1) }
 
#define H2_LIT_ARGS(a)   (a),H2_ALEN(a)
 
#define H2_HD_MATCH_LIT(l, name, nlen)    ((nlen == sizeof(l) - 1) && !apr_strnatcasecmp(l, name))
 

Functions

unsigned char h2_proxy_log2 (int n)
 
static unsigned int ihash (const char *key, apr_ssize_t *klen)
 
h2_proxy_ihash_t * h2_proxy_ihash_create (apr_pool_t *pool, size_t offset_of_int)
 
size_t h2_proxy_ihash_count (h2_proxy_ihash_t *ih)
 
int h2_proxy_ihash_empty (h2_proxy_ihash_t *ih)
 
void * h2_proxy_ihash_get (h2_proxy_ihash_t *ih, int id)
 
static int ihash_iter (void *ctx, const void *key, apr_ssize_t klen, const void *val)
 
int h2_proxy_ihash_iter (h2_proxy_ihash_t *ih, h2_proxy_ihash_iter_t *fn, void *ctx)
 
void h2_proxy_ihash_add (h2_proxy_ihash_t *ih, void *val)
 
void h2_proxy_ihash_remove (h2_proxy_ihash_t *ih, int id)
 
void h2_proxy_ihash_remove_val (h2_proxy_ihash_t *ih, void *val)
 
void h2_proxy_ihash_clear (h2_proxy_ihash_t *ih)
 
static int collect_iter (void *x, void *val)
 
size_t h2_proxy_ihash_shift (h2_proxy_ihash_t *ih, void **buffer, size_t max)
 
static int icollect_iter (void *x, void *val)
 
size_t h2_proxy_ihash_ishift (h2_proxy_ihash_t *ih, int *buffer, size_t max)
 
static void iq_grow (h2_proxy_iqueue *q, int nlen)
 
static void iq_swap (h2_proxy_iqueue *q, int i, int j)
 
static int iq_bubble_up (h2_proxy_iqueue *q, int i, int top, h2_proxy_iq_cmp *cmp, void *ctx)
 
static int iq_bubble_down (h2_proxy_iqueue *q, int i, int bottom, h2_proxy_iq_cmp *cmp, void *ctx)
 
h2_proxy_iqueue * h2_proxy_iq_create (apr_pool_t *pool, int capacity)
 
int h2_proxy_iq_empty (h2_proxy_iqueue *q)
 
int h2_proxy_iq_count (h2_proxy_iqueue *q)
 
void h2_proxy_iq_add (h2_proxy_iqueue *q, int sid, h2_proxy_iq_cmp *cmp, void *ctx)
 
int h2_proxy_iq_remove (h2_proxy_iqueue *q, int sid)
 
void h2_proxy_iq_clear (h2_proxy_iqueue *q)
 
void h2_proxy_iq_sort (h2_proxy_iqueue *q, h2_proxy_iq_cmp *cmp, void *ctx)
 
int h2_proxy_iq_shift (h2_proxy_iqueue *q)
 
static int h2_util_ignore_header (const char *name)
 
static int count_header (void *ctx, const char *key, const char *value)
 
static int add_header (h2_proxy_ngheader *ngh, const char *key, size_t key_len, const char *value, size_t val_len)
 
static int add_table_header (void *ctx, const char *key, const char *value)
 
h2_proxy_ngheader * h2_proxy_util_nghd_make_req (apr_pool_t *p, const h2_proxy_request *req)
 
h2_proxy_ngheader * h2_proxy_util_nghd_make (apr_pool_t *p, apr_table_t *headers)
 
static int ignore_header (const literal *lits, size_t llen, const char *name, size_t nlen)
 
static int h2_proxy_req_ignore_header (const char *name, size_t len)
 
int h2_proxy_res_ignore_header (const char *name, size_t len)
 
void h2_proxy_util_camel_case_header (char *s, size_t len)
 
static apr_status_t h2_headers_add_h1 (apr_table_t *headers, apr_pool_t *pool, const char *name, size_t nlen, const char *value, size_t vlen)
 
static h2_proxy_request * h2_proxy_req_createn (int id, apr_pool_t *pool, const char *method, const char *scheme, const char *authority, const char *path, apr_table_t *header)
 
h2_proxy_request * h2_proxy_req_create (int id, apr_pool_t *pool)
 
static int set_h1_header (void *ctx, const char *key, const char *value)
 
apr_status_t h2_proxy_req_make (h2_proxy_request *req, apr_pool_t *pool, const char *method, const char *scheme, const char *authority, const char *path, apr_table_t *headers)
 
int h2_proxy_util_frame_print (const nghttp2_frame *frame, char *buffer, size_t maxlen)
 
static int attr_char (char c)
 
static int ptoken_char (char c)
 
static int skip_ws (link_ctx *ctx)
 
static int find_chr (link_ctx *ctx, char c, int *pidx)
 
static int read_chr (link_ctx *ctx, char c)
 
static int skip_qstring (link_ctx *ctx)
 
static int skip_ptoken (link_ctx *ctx)
 
static int read_link (link_ctx *ctx)
 
static int skip_pname (link_ctx *ctx)
 
static int skip_pvalue (link_ctx *ctx)
 
static int skip_param (link_ctx *ctx)
 
static int read_sep (link_ctx *ctx)
 
static size_t subst_str (link_ctx *ctx, int start, int end, const char *ns)
 
static void map_link (link_ctx *ctx)
 
const char * h2_proxy_link_reverse_map (request_rec *r, proxy_dir_conf *conf, const char *real_backend_uri, const char *proxy_server_uri, const char *s)
 
static int nth_index (h2_proxy_fifo *fifo, int n)
 
static apr_status_t fifo_destroy (void *data)
 
static int index_of (h2_proxy_fifo *fifo, void *elem)
 
static apr_status_t create_int (h2_proxy_fifo **pfifo, apr_pool_t *pool, int capacity, int as_set)
 
apr_status_t h2_proxy_fifo_create (h2_proxy_fifo **pfifo, apr_pool_t *pool, int capacity)
 
apr_status_t h2_proxy_fifo_set_create (h2_proxy_fifo **pfifo, apr_pool_t *pool, int capacity)
 
apr_status_t h2_proxy_fifo_term (h2_proxy_fifo *fifo)
 
apr_status_t h2_proxy_fifo_interrupt (h2_proxy_fifo *fifo)
 
int h2_proxy_fifo_count (h2_proxy_fifo *fifo)
 
int h2_proxy_fifo_capacity (h2_proxy_fifo *fifo)
 
static apr_status_t check_not_empty (h2_proxy_fifo *fifo, int block)
 
static apr_status_t fifo_push (h2_proxy_fifo *fifo, void *elem, int block)
 
apr_status_t h2_proxy_fifo_push (h2_proxy_fifo *fifo, void *elem)
 
apr_status_t h2_proxy_fifo_try_push (h2_proxy_fifo *fifo, void *elem)
 
static void * pull_head (h2_proxy_fifo *fifo)
 
static apr_status_t fifo_pull (h2_proxy_fifo *fifo, void **pelem, int block)
 
apr_status_t h2_proxy_fifo_pull (h2_proxy_fifo *fifo, void **pelem)
 
apr_status_t h2_proxy_fifo_try_pull (h2_proxy_fifo *fifo, void **pelem)
 
apr_status_t h2_proxy_fifo_remove (h2_proxy_fifo *fifo, void *elem)
 

Variables

static int *const aplog_module_index = &( proxy_http2_module.module_index)
 
static literal IgnoredRequestHeaders []
 
static literal IgnoredProxyRespHds []
 

Macro Definition Documentation

◆ H2_DEF_LITERAL

#define H2_DEF_LITERAL (   n)    { (n), (sizeof(n)-1) }

Definition at line 480 of file h2_proxy_util.c.

◆ H2_HD_MATCH_LIT

#define H2_HD_MATCH_LIT (   l,
  name,
  nlen 
)     ((nlen == sizeof(l) - 1) && !apr_strnatcasecmp(l, name))

Match a header value against a string constance, case insensitive

Definition at line 544 of file h2_proxy_util.c.

◆ H2_HD_MATCH_LIT_CS

#define H2_HD_MATCH_LIT_CS (   l,
  name 
)     ((strlen(name) == sizeof(l) - 1) && !apr_strnatcasecmp(l, name))

Definition at line 383 of file h2_proxy_util.c.

◆ H2_LIT_ARGS

#define H2_LIT_ARGS (   a)    (a),H2_ALEN(a)

Definition at line 481 of file h2_proxy_util.c.

◆ NV_ADD_CS_CS

#define NV_ADD_CS_CS (   nv,
  k,
  v 
)    add_header(nv, k, strlen(k), v, strlen(v))

Definition at line 405 of file h2_proxy_util.c.

◆ NV_ADD_LIT_CS

#define NV_ADD_LIT_CS (   nv,
  k,
  v 
)    add_header(nv, k, sizeof(k) - 1, v, strlen(v))

Definition at line 404 of file h2_proxy_util.c.

Function Documentation

◆ add_header()

static int add_header ( h2_proxy_ngheader *  ngh,
const char *  key,
size_t  key_len,
const char *  value,
size_t  val_len 
)
static

Definition at line 407 of file h2_proxy_util.c.

◆ add_table_header()

static int add_table_header ( void *  ctx,
const char *  key,
const char *  value 
)
static

Definition at line 420 of file h2_proxy_util.c.

◆ attr_char()

static int attr_char ( char  c)
static

Definition at line 753 of file h2_proxy_util.c.

◆ check_not_empty()

static apr_status_t check_not_empty ( h2_proxy_fifo *  fifo,
int  block 
)
static

Definition at line 1203 of file h2_proxy_util.c.

◆ collect_iter()

static int collect_iter ( void *  x,
void *  val 
)
static

Definition at line 151 of file h2_proxy_util.c.

◆ count_header()

static int count_header ( void *  ctx,
const char *  key,
const char *  value 
)
static

Definition at line 396 of file h2_proxy_util.c.

◆ create_int()

static apr_status_t create_int ( h2_proxy_fifo **  pfifo,
apr_pool_t *  pool,
int  capacity,
int  as_set 
)
static

Definition at line 1122 of file h2_proxy_util.c.

◆ fifo_destroy()

static apr_status_t fifo_destroy ( void *  data)
static

Definition at line 1099 of file h2_proxy_util.c.

◆ fifo_pull()

static apr_status_t fifo_pull ( h2_proxy_fifo *  fifo,
void **  pelem,
int  block 
)
static

Definition at line 1286 of file h2_proxy_util.c.

◆ fifo_push()

static apr_status_t fifo_push ( h2_proxy_fifo *  fifo,
void *  elem,
int  block 
)
static

Definition at line 1219 of file h2_proxy_util.c.

◆ find_chr()

static int find_chr ( link_ctx *  ctx,
char  c,
int *  pidx 
)
static

Definition at line 820 of file h2_proxy_util.c.

◆ h2_headers_add_h1()

static apr_status_t h2_headers_add_h1 ( apr_table_t *  headers,
apr_pool_t *  pool,
const char *  name,
size_t  nlen,
const char *  value,
size_t  vlen 
)
static

Definition at line 547 of file h2_proxy_util.c.

◆ h2_proxy_fifo_capacity()

int h2_proxy_fifo_capacity ( h2_proxy_fifo *  fifo)

Definition at line 1198 of file h2_proxy_util.c.

◆ h2_proxy_fifo_count()

int h2_proxy_fifo_count ( h2_proxy_fifo *  fifo)

Definition at line 1193 of file h2_proxy_util.c.

◆ h2_proxy_fifo_create()

apr_status_t h2_proxy_fifo_create ( h2_proxy_fifo **  pfifo,
apr_pool_t *  pool,
int  capacity 
)

Create a FIFO queue that can hold up to capacity elements. Elements can appear several times.

Definition at line 1162 of file h2_proxy_util.c.

◆ h2_proxy_fifo_interrupt()

apr_status_t h2_proxy_fifo_interrupt ( h2_proxy_fifo *  fifo)

Definition at line 1182 of file h2_proxy_util.c.

◆ h2_proxy_fifo_pull()

apr_status_t h2_proxy_fifo_pull ( h2_proxy_fifo *  fifo,
void **  pelem 
)

Definition at line 1309 of file h2_proxy_util.c.

◆ h2_proxy_fifo_push()

apr_status_t h2_proxy_fifo_push ( h2_proxy_fifo *  fifo,
void *  elem 
)

Push en element into the queue. Blocks if there is no capacity left.

Parameters
fifothe FIFO queue
elemthe element to push
Returns
APR_SUCCESS on push, APR_EAGAIN on try_push on a full queue, APR_EEXIST when in set mode and elem already there.

Definition at line 1260 of file h2_proxy_util.c.

◆ h2_proxy_fifo_remove()

apr_status_t h2_proxy_fifo_remove ( h2_proxy_fifo *  fifo,
void *  elem 
)

Remove the elem from the queue, will remove multiple appearances.

Parameters
elemthe element to remove
Returns
APR_SUCCESS iff > 0 elems were removed, APR_EAGAIN otherwise.

Definition at line 1319 of file h2_proxy_util.c.

◆ h2_proxy_fifo_set_create()

apr_status_t h2_proxy_fifo_set_create ( h2_proxy_fifo **  pfifo,
apr_pool_t *  pool,
int  capacity 
)

Create a FIFO set that can hold up to capacity elements. Elements only appear once. Pushing an element already present does not change the queue and is successful.

Definition at line 1167 of file h2_proxy_util.c.

◆ h2_proxy_fifo_term()

apr_status_t h2_proxy_fifo_term ( h2_proxy_fifo *  fifo)

Definition at line 1172 of file h2_proxy_util.c.

◆ h2_proxy_fifo_try_pull()

apr_status_t h2_proxy_fifo_try_pull ( h2_proxy_fifo *  fifo,
void **  pelem 
)

Definition at line 1314 of file h2_proxy_util.c.

◆ h2_proxy_fifo_try_push()

apr_status_t h2_proxy_fifo_try_push ( h2_proxy_fifo *  fifo,
void *  elem 
)

Definition at line 1265 of file h2_proxy_util.c.

◆ h2_proxy_ihash_add()

void h2_proxy_ihash_add ( h2_proxy_ihash_t *  ih,
void *  val 
)

Definition at line 122 of file h2_proxy_util.c.

◆ h2_proxy_ihash_clear()

void h2_proxy_ihash_clear ( h2_proxy_ihash_t *  ih)

Definition at line 139 of file h2_proxy_util.c.

◆ h2_proxy_ihash_count()

size_t h2_proxy_ihash_count ( h2_proxy_ihash_t *  ih)

Definition at line 87 of file h2_proxy_util.c.

◆ h2_proxy_ihash_create()

h2_proxy_ihash_t * h2_proxy_ihash_create ( apr_pool_t *  pool,
size_t  offset_of_int 
)

Create a hash for structures that have an identifying int member.

Parameters
poolthe pool to use
offset_of_intthe offsetof() the int member in the struct

Definition at line 79 of file h2_proxy_util.c.

◆ h2_proxy_ihash_empty()

int h2_proxy_ihash_empty ( h2_proxy_ihash_t *  ih)

Definition at line 92 of file h2_proxy_util.c.

◆ h2_proxy_ihash_get()

void * h2_proxy_ihash_get ( h2_proxy_ihash_t *  ih,
int  id 
)

Definition at line 97 of file h2_proxy_util.c.

◆ h2_proxy_ihash_ishift()

size_t h2_proxy_ihash_ishift ( h2_proxy_ihash_t *  ih,
int *  buffer,
size_t  max 
)

Definition at line 194 of file h2_proxy_util.c.

◆ h2_proxy_ihash_iter()

int h2_proxy_ihash_iter ( h2_proxy_ihash_t *  ih,
h2_proxy_ihash_iter_t *  fn,
void *  ctx 
)

Iterate over the hash members (without defined order) and invoke fn for each member until 0 is returned.

Parameters
ihthe hash to iterate over
fnthe function to invoke on each member
ctxuser supplied data passed into each iteration call
Returns
0 if one iteration returned 0, otherwise != 0

Definition at line 114 of file h2_proxy_util.c.

◆ h2_proxy_ihash_remove()

void h2_proxy_ihash_remove ( h2_proxy_ihash_t *  ih,
int  id 
)

Definition at line 127 of file h2_proxy_util.c.

◆ h2_proxy_ihash_remove_val()

void h2_proxy_ihash_remove_val ( h2_proxy_ihash_t *  ih,
void *  val 
)

Definition at line 132 of file h2_proxy_util.c.

◆ h2_proxy_ihash_shift()

size_t h2_proxy_ihash_shift ( h2_proxy_ihash_t *  ih,
void **  buffer,
size_t  max 
)

Definition at line 161 of file h2_proxy_util.c.

◆ h2_proxy_iq_add()

void h2_proxy_iq_add ( h2_proxy_iqueue *  q,
int  sid,
h2_proxy_iq_cmp *  cmp,
void *  ctx 
)

Add a stream id to the queue.

Parameters
qthe queue to append the task to
sidthe stream id to add
cmpthe comparator for sorting
ctxuser data for comparator

Definition at line 243 of file h2_proxy_util.c.

◆ h2_proxy_iq_clear()

void h2_proxy_iq_clear ( h2_proxy_iqueue *  q)

Remove all entries in the queue.

Definition at line 281 of file h2_proxy_util.c.

◆ h2_proxy_iq_count()

int h2_proxy_iq_count ( h2_proxy_iqueue *  q)

Return the number of int in the queue.

Parameters
qthe queue to get size on

Definition at line 237 of file h2_proxy_util.c.

◆ h2_proxy_iq_create()

h2_proxy_iqueue * h2_proxy_iq_create ( apr_pool_t *  pool,
int  capacity 
)

Allocate a new queue from the pool and initialize.

Parameters
idthe identifier of the queue
poolthe memory pool

Definition at line 221 of file h2_proxy_util.c.

◆ h2_proxy_iq_empty()

int h2_proxy_iq_empty ( h2_proxy_iqueue *  q)

Return != 0 iff there are no tasks in the queue.

Parameters
qthe queue to check

Definition at line 232 of file h2_proxy_util.c.

◆ h2_proxy_iq_remove()

int h2_proxy_iq_remove ( h2_proxy_iqueue *  q,
int  sid 
)

Remove the stream id from the queue. Return != 0 iff task was found in queue.

Parameters
qthe task queue
sidthe stream id to remove
Returns
!= 0 iff task was found in queue

Definition at line 261 of file h2_proxy_util.c.

◆ h2_proxy_iq_shift()

int h2_proxy_iq_shift ( h2_proxy_iqueue *  q)

Get the first stream id from the queue or NULL if the queue is empty. The task will be removed.

Parameters
qthe queue to get the first task from
Returns
the first stream id of the queue, 0 if empty

Definition at line 314 of file h2_proxy_util.c.

◆ h2_proxy_iq_sort()

void h2_proxy_iq_sort ( h2_proxy_iqueue *  q,
h2_proxy_iq_cmp *  cmp,
void *  ctx 
)

Sort the stream idqueue again. Call if the task ordering has changed.

Parameters
qthe queue to sort
cmpthe comparator for sorting
ctxuser data for the comparator

Definition at line 286 of file h2_proxy_util.c.

◆ h2_proxy_link_reverse_map()

const char * h2_proxy_link_reverse_map ( request_rec *  r,
proxy_dir_conf *  conf,
const char *  real_backend_uri,
const char *  proxy_server_uri,
const char *  s 
)

< Reverse proxy

Definition at line 1043 of file h2_proxy_util.c.

◆ h2_proxy_log2()

unsigned char h2_proxy_log2 ( int  n)

Definition at line 37 of file h2_proxy_util.c.

◆ h2_proxy_req_create()

h2_proxy_request * h2_proxy_req_create ( int  id,
apr_pool_t *  pool 
)

Definition at line 600 of file h2_proxy_util.c.

◆ h2_proxy_req_createn()

static h2_proxy_request * h2_proxy_req_createn ( int  id,
apr_pool_t *  pool,
const char *  method,
const char *  scheme,
const char *  authority,
const char *  path,
apr_table_t *  header 
)
static

Definition at line 584 of file h2_proxy_util.c.

◆ h2_proxy_req_ignore_header()

static int h2_proxy_req_ignore_header ( const char *  name,
size_t  len 
)
static

Definition at line 510 of file h2_proxy_util.c.

◆ h2_proxy_req_make()

apr_status_t h2_proxy_req_make ( h2_proxy_request *  req,
apr_pool_t *  pool,
const char *  method,
const char *  scheme,
const char *  authority,
const char *  path,
apr_table_t *  headers 
)

Definition at line 620 of file h2_proxy_util.c.

◆ h2_proxy_res_ignore_header()

int h2_proxy_res_ignore_header ( const char *  name,
size_t  len 
)

Definition at line 515 of file h2_proxy_util.c.

◆ h2_proxy_util_camel_case_header()

void h2_proxy_util_camel_case_header ( char *  s,
size_t  len 
)

Definition at line 521 of file h2_proxy_util.c.

◆ h2_proxy_util_frame_print()

int h2_proxy_util_frame_print ( const nghttp2_frame *  frame,
char *  buffer,
size_t  maxlen 
)

Definition at line 653 of file h2_proxy_util.c.

◆ h2_proxy_util_nghd_make()

h2_proxy_ngheader * h2_proxy_util_nghd_make ( apr_pool_t *  p,
apr_table_t *  headers 
)

Definition at line 455 of file h2_proxy_util.c.

◆ h2_proxy_util_nghd_make_req()

h2_proxy_ngheader * h2_proxy_util_nghd_make_req ( apr_pool_t *  p,
const h2_proxy_request *  req 
)

Definition at line 428 of file h2_proxy_util.c.

◆ h2_util_ignore_header()

static int h2_util_ignore_header ( const char *  name)
static

Definition at line 386 of file h2_proxy_util.c.

◆ icollect_iter()

static int icollect_iter ( void *  x,
void *  val 
)
static

Definition at line 184 of file h2_proxy_util.c.

◆ ignore_header()

static int ignore_header ( const literal *  lits,
size_t  llen,
const char *  name,
size_t  nlen 
)
static

Definition at line 495 of file h2_proxy_util.c.

◆ ihash()

static unsigned int ihash ( const char *  key,
apr_ssize_t *  klen 
)
static

Definition at line 74 of file h2_proxy_util.c.

◆ ihash_iter()

static int ihash_iter ( void *  ctx,
const void *  key,
apr_ssize_t  klen,
const void *  val 
)
static

Definition at line 107 of file h2_proxy_util.c.

◆ index_of()

static int index_of ( h2_proxy_fifo *  fifo,
void *  elem 
)
static

Definition at line 1110 of file h2_proxy_util.c.

◆ iq_bubble_down()

static int iq_bubble_down ( h2_proxy_iqueue *  q,
int  i,
int  bottom,
h2_proxy_iq_cmp *  cmp,
void *  ctx 
)
static

Definition at line 368 of file h2_proxy_util.c.

◆ iq_bubble_up()

static int iq_bubble_up ( h2_proxy_iqueue *  q,
int  i,
int  top,
h2_proxy_iq_cmp *  cmp,
void *  ctx 
)
static

Definition at line 356 of file h2_proxy_util.c.

◆ iq_grow()

static void iq_grow ( h2_proxy_iqueue *  q,
int  nlen 
)
static

Definition at line 329 of file h2_proxy_util.c.

◆ iq_swap()

static void iq_swap ( h2_proxy_iqueue *  q,
int  i,
int  j 
)
static

Definition at line 349 of file h2_proxy_util.c.

◆ map_link()

static void map_link ( link_ctx *  ctx)
static

Definition at line 950 of file h2_proxy_util.c.

◆ nth_index()

static int nth_index ( h2_proxy_fifo *  fifo,
int  n 
)
static

Definition at line 1094 of file h2_proxy_util.c.

◆ ptoken_char()

static int ptoken_char ( char  c)
static

Definition at line 774 of file h2_proxy_util.c.

◆ pull_head()

static void * pull_head ( h2_proxy_fifo *  fifo)
static

Definition at line 1270 of file h2_proxy_util.c.

◆ read_chr()

static int read_chr ( link_ctx *  ctx,
char  c 
)
static

Definition at line 832 of file h2_proxy_util.c.

◆ read_link()

static int read_link ( link_ctx *  ctx)
static

Definition at line 869 of file h2_proxy_util.c.

◆ read_sep()

static int read_sep ( link_ctx *  ctx)
static

Definition at line 920 of file h2_proxy_util.c.

◆ set_h1_header()

static int set_h1_header ( void *  ctx,
const char *  key,
const char *  value 
)
static

Definition at line 610 of file h2_proxy_util.c.

◆ skip_param()

static int skip_param ( link_ctx *  ctx)
static

Definition at line 909 of file h2_proxy_util.c.

◆ skip_pname()

static int skip_pname ( link_ctx *  ctx)
static

Definition at line 884 of file h2_proxy_util.c.

◆ skip_ptoken()

static int skip_ptoken ( link_ctx *  ctx)
static

Definition at line 853 of file h2_proxy_util.c.

◆ skip_pvalue()

static int skip_pvalue ( link_ctx *  ctx)
static

Definition at line 899 of file h2_proxy_util.c.

◆ skip_qstring()

static int skip_qstring ( link_ctx *  ctx)
static

Definition at line 841 of file h2_proxy_util.c.

◆ skip_ws()

static int skip_ws ( link_ctx *  ctx)
static

Definition at line 810 of file h2_proxy_util.c.

◆ subst_str()

static size_t subst_str ( link_ctx *  ctx,
int  start,
int  end,
const char *  ns 
)
static

Definition at line 928 of file h2_proxy_util.c.

Variable Documentation

◆ aplog_module_index

int* const aplog_module_index = &( proxy_http2_module.module_index)
static

Definition at line 34 of file h2_proxy_util.c.

◆ IgnoredProxyRespHds

literal IgnoredProxyRespHds[]
static
Initial value:
= {
{ ( "alt-svc" ), (sizeof( "alt-svc" )-1) },
}

Definition at line 491 of file h2_proxy_util.c.

◆ IgnoredRequestHeaders

literal IgnoredRequestHeaders[]
static
Initial value:
= {
{ ( "upgrade" ), (sizeof( "upgrade" )-1) },
{ ( "connection" ), (sizeof( "connection" )-1) },
{ ( "keep-alive" ), (sizeof( "keep-alive" )-1) },
{ ( "http2-settings" ), (sizeof( "http2-settings" )-1) },
{ ( "proxy-connection" ), (sizeof( "proxy-connection" )-1) },
{ ( "transfer-encoding" ), (sizeof( "transfer-encoding" )-1) },
}

Definition at line 483 of file h2_proxy_util.c.