|
Apache HTTPD
|
#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)) |
Variables | |
| static int *const | aplog_module_index = &( proxy_http2_module.module_index) |
| static literal | IgnoredRequestHeaders [] |
| static literal | IgnoredProxyRespHds [] |
Match a header value against a string constance, case insensitive
Definition at line 544 of file h2_proxy_util.c.
| #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.
| #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.
| #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.
|
static |
Definition at line 407 of file h2_proxy_util.c.
Definition at line 420 of file h2_proxy_util.c.
Definition at line 753 of file h2_proxy_util.c.
|
static |
Definition at line 1203 of file h2_proxy_util.c.
Definition at line 151 of file h2_proxy_util.c.
Definition at line 396 of file h2_proxy_util.c.
|
static |
Definition at line 1122 of file h2_proxy_util.c.
|
static |
Definition at line 1099 of file h2_proxy_util.c.
|
static |
Definition at line 1286 of file h2_proxy_util.c.
|
static |
Definition at line 1219 of file h2_proxy_util.c.
Definition at line 820 of file h2_proxy_util.c.
|
static |
Definition at line 547 of file h2_proxy_util.c.
| int h2_proxy_fifo_capacity | ( | h2_proxy_fifo * | fifo | ) |
Definition at line 1198 of file h2_proxy_util.c.
| int h2_proxy_fifo_count | ( | h2_proxy_fifo * | fifo | ) |
Definition at line 1193 of file h2_proxy_util.c.
| 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.
| apr_status_t h2_proxy_fifo_interrupt | ( | h2_proxy_fifo * | fifo | ) |
Definition at line 1182 of file h2_proxy_util.c.
| apr_status_t h2_proxy_fifo_pull | ( | h2_proxy_fifo * | fifo, |
| void ** | pelem | ||
| ) |
Definition at line 1309 of file h2_proxy_util.c.
| 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.
| fifo | the FIFO queue |
| elem | the element to push |
Definition at line 1260 of file h2_proxy_util.c.
| apr_status_t h2_proxy_fifo_remove | ( | h2_proxy_fifo * | fifo, |
| void * | elem | ||
| ) |
Remove the elem from the queue, will remove multiple appearances.
| elem | the element to remove |
Definition at line 1319 of file h2_proxy_util.c.
| 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.
| apr_status_t h2_proxy_fifo_term | ( | h2_proxy_fifo * | fifo | ) |
Definition at line 1172 of file h2_proxy_util.c.
| apr_status_t h2_proxy_fifo_try_pull | ( | h2_proxy_fifo * | fifo, |
| void ** | pelem | ||
| ) |
Definition at line 1314 of file h2_proxy_util.c.
| apr_status_t h2_proxy_fifo_try_push | ( | h2_proxy_fifo * | fifo, |
| void * | elem | ||
| ) |
Definition at line 1265 of file h2_proxy_util.c.
| void h2_proxy_ihash_add | ( | h2_proxy_ihash_t * | ih, |
| void * | val | ||
| ) |
Definition at line 122 of file h2_proxy_util.c.
| void h2_proxy_ihash_clear | ( | h2_proxy_ihash_t * | ih | ) |
Definition at line 139 of file h2_proxy_util.c.
| size_t h2_proxy_ihash_count | ( | h2_proxy_ihash_t * | ih | ) |
Definition at line 87 of file h2_proxy_util.c.
| 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.
| pool | the pool to use |
| offset_of_int | the offsetof() the int member in the struct |
Definition at line 79 of file h2_proxy_util.c.
| int h2_proxy_ihash_empty | ( | h2_proxy_ihash_t * | ih | ) |
Definition at line 92 of file h2_proxy_util.c.
| void * h2_proxy_ihash_get | ( | h2_proxy_ihash_t * | ih, |
| int | id | ||
| ) |
Definition at line 97 of file h2_proxy_util.c.
| 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.
| 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.
| ih | the hash to iterate over |
| fn | the function to invoke on each member |
| ctx | user supplied data passed into each iteration call |
Definition at line 114 of file h2_proxy_util.c.
| void h2_proxy_ihash_remove | ( | h2_proxy_ihash_t * | ih, |
| int | id | ||
| ) |
Definition at line 127 of file h2_proxy_util.c.
| void h2_proxy_ihash_remove_val | ( | h2_proxy_ihash_t * | ih, |
| void * | val | ||
| ) |
Definition at line 132 of file h2_proxy_util.c.
| 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.
| 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.
| q | the queue to append the task to |
| sid | the stream id to add |
| cmp | the comparator for sorting |
| ctx | user data for comparator |
Definition at line 243 of file h2_proxy_util.c.
| 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.
| int h2_proxy_iq_count | ( | h2_proxy_iqueue * | q | ) |
Return the number of int in the queue.
| q | the queue to get size on |
Definition at line 237 of file h2_proxy_util.c.
| h2_proxy_iqueue * h2_proxy_iq_create | ( | apr_pool_t * | pool, |
| int | capacity | ||
| ) |
Allocate a new queue from the pool and initialize.
| id | the identifier of the queue |
| pool | the memory pool |
Definition at line 221 of file h2_proxy_util.c.
| int h2_proxy_iq_empty | ( | h2_proxy_iqueue * | q | ) |
Return != 0 iff there are no tasks in the queue.
| q | the queue to check |
Definition at line 232 of file h2_proxy_util.c.
| 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.
| q | the task queue |
| sid | the stream id to remove |
Definition at line 261 of file h2_proxy_util.c.
| 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.
| q | the queue to get the first task from |
Definition at line 314 of file h2_proxy_util.c.
| 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.
| q | the queue to sort |
| cmp | the comparator for sorting |
| ctx | user data for the comparator |
Definition at line 286 of file h2_proxy_util.c.
| 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.
Definition at line 37 of file h2_proxy_util.c.
| h2_proxy_request * h2_proxy_req_create | ( | int | id, |
| apr_pool_t * | pool | ||
| ) |
Definition at line 600 of file h2_proxy_util.c.
|
static |
Definition at line 584 of file h2_proxy_util.c.
Definition at line 510 of file h2_proxy_util.c.
| 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.
Definition at line 515 of file h2_proxy_util.c.
Definition at line 521 of file h2_proxy_util.c.
| 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_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_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.
Definition at line 386 of file h2_proxy_util.c.
Definition at line 184 of file h2_proxy_util.c.
|
static |
Definition at line 495 of file h2_proxy_util.c.
Definition at line 74 of file h2_proxy_util.c.
|
static |
Definition at line 107 of file h2_proxy_util.c.
|
static |
Definition at line 1110 of file h2_proxy_util.c.
|
static |
Definition at line 368 of file h2_proxy_util.c.
|
static |
Definition at line 356 of file h2_proxy_util.c.
|
static |
Definition at line 329 of file h2_proxy_util.c.
|
static |
Definition at line 349 of file h2_proxy_util.c.
Definition at line 950 of file h2_proxy_util.c.
|
static |
Definition at line 1094 of file h2_proxy_util.c.
Definition at line 774 of file h2_proxy_util.c.
|
static |
Definition at line 1270 of file h2_proxy_util.c.
Definition at line 832 of file h2_proxy_util.c.
Definition at line 869 of file h2_proxy_util.c.
Definition at line 920 of file h2_proxy_util.c.
Definition at line 610 of file h2_proxy_util.c.
Definition at line 909 of file h2_proxy_util.c.
Definition at line 884 of file h2_proxy_util.c.
Definition at line 853 of file h2_proxy_util.c.
Definition at line 899 of file h2_proxy_util.c.
Definition at line 841 of file h2_proxy_util.c.
Definition at line 810 of file h2_proxy_util.c.
Definition at line 928 of file h2_proxy_util.c.
Definition at line 34 of file h2_proxy_util.c.
|
static |
Definition at line 491 of file h2_proxy_util.c.
|
static |
Definition at line 483 of file h2_proxy_util.c.