123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023 |
- #ifndef APACHE_HTTP_PROTOCOL_H
- #define APACHE_HTTP_PROTOCOL_H
- #include "httpd.h"
- #include "apr_portable.h"
- #include "apr_mmap.h"
- #include "apr_buckets.h"
- #include "util_filter.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- AP_DECLARE_HOOK(void,insert_error_filter,(request_rec *r))
- AP_DECLARE_DATA extern ap_filter_rec_t *ap_old_write_func;
- request_rec *ap_read_request(conn_rec *c);
- AP_DECLARE(void) ap_get_mime_headers(request_rec *r);
- AP_DECLARE(void) ap_get_mime_headers_core(request_rec *r,
- apr_bucket_brigade *bb);
- AP_DECLARE(void) ap_finalize_request_protocol(request_rec *r);
- AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error);
- AP_DECLARE(void) ap_set_content_length(request_rec *r, apr_off_t length);
- AP_DECLARE(int) ap_set_keepalive(request_rec *r);
- AP_DECLARE(apr_time_t) ap_rationalize_mtime(request_rec *r, apr_time_t mtime);
- AP_DECLARE(const char *) ap_make_content_type(request_rec *r,
- const char *type);
- AP_DECLARE(void) ap_setup_make_content_type(apr_pool_t *pool);
- AP_DECLARE(char *) ap_make_etag(request_rec *r, int force_weak);
- AP_DECLARE(void) ap_set_etag(request_rec *r);
- AP_DECLARE(void) ap_set_last_modified(request_rec *r);
- typedef enum {
- AP_CONDITION_NONE,
- AP_CONDITION_NOMATCH,
- AP_CONDITION_WEAK,
- AP_CONDITION_STRONG
- } ap_condition_e;
- AP_DECLARE(ap_condition_e) ap_condition_if_match(request_rec *r,
- apr_table_t *headers);
- AP_DECLARE(ap_condition_e) ap_condition_if_unmodified_since(request_rec *r,
- apr_table_t *headers);
- AP_DECLARE(ap_condition_e) ap_condition_if_none_match(request_rec *r,
- apr_table_t *headers);
- AP_DECLARE(ap_condition_e) ap_condition_if_modified_since(request_rec *r,
- apr_table_t *headers);
- AP_DECLARE(ap_condition_e) ap_condition_if_range(request_rec *r,
- apr_table_t *headers);
- AP_DECLARE(int) ap_meets_conditions(request_rec *r);
- AP_DECLARE(apr_status_t) ap_send_fd(apr_file_t *fd, request_rec *r, apr_off_t offset,
- apr_size_t length, apr_size_t *nbytes);
- #if APR_HAS_MMAP
- AP_DECLARE(apr_size_t) ap_send_mmap(apr_mmap_t *mm,
- request_rec *r,
- apr_size_t offset,
- apr_size_t length);
- #endif
- AP_DECLARE(int) ap_method_register(apr_pool_t *p, const char *methname);
- AP_DECLARE(void) ap_method_registry_init(apr_pool_t *p);
- #define AP_METHOD_CHECK_ALLOWED(mask, methname) \
- ((mask) & (AP_METHOD_BIT << ap_method_number_of((methname))))
- AP_DECLARE(ap_method_list_t *) ap_make_method_list(apr_pool_t *p, int nelts);
- AP_DECLARE(void) ap_copy_method_list(ap_method_list_t *dest,
- ap_method_list_t *src);
- AP_DECLARE(int) ap_method_in_list(ap_method_list_t *l, const char *method);
- AP_DECLARE(void) ap_method_list_add(ap_method_list_t *l, const char *method);
- AP_DECLARE(void) ap_method_list_remove(ap_method_list_t *l,
- const char *method);
- AP_DECLARE(void) ap_clear_method_list(ap_method_list_t *l);
- AP_DECLARE(void) ap_set_content_type(request_rec *r, const char *ct);
- AP_DECLARE(void) ap_set_accept_ranges(request_rec *r);
- AP_DECLARE(int) ap_rputc(int c, request_rec *r);
- AP_DECLARE(int) ap_rwrite(const void *buf, int nbyte, request_rec *r);
- static APR_INLINE int ap_rputs(const char *str, request_rec *r)
- {
- return ap_rwrite(str, (int)strlen(str), r);
- }
- AP_DECLARE_NONSTD(int) ap_rvputs(request_rec *r,...)
- AP_FN_ATTR_SENTINEL;
- AP_DECLARE(int) ap_vrprintf(request_rec *r, const char *fmt, va_list vlist);
- AP_DECLARE_NONSTD(int) ap_rprintf(request_rec *r, const char *fmt,...)
- __attribute__((format(printf,2,3)));
- AP_DECLARE(int) ap_rflush(request_rec *r);
- AP_DECLARE(int) ap_index_of_response(int status);
- AP_DECLARE(const char *) ap_get_status_line(int status);
- AP_DECLARE(int) ap_setup_client_block(request_rec *r, int read_policy);
- AP_DECLARE(int) ap_should_client_block(request_rec *r);
- AP_DECLARE(long) ap_get_client_block(request_rec *r, char *buffer, apr_size_t bufsiz);
- AP_DECLARE(int) ap_map_http_request_error(apr_status_t rv, int status);
- AP_DECLARE(int) ap_discard_request_body(request_rec *r);
- AP_DECLARE(void) ap_note_auth_failure(request_rec *r);
- AP_DECLARE(void) ap_note_basic_auth_failure(request_rec *r);
- AP_DECLARE(void) ap_note_digest_auth_failure(request_rec *r);
- AP_DECLARE_HOOK(int, note_auth_failure, (request_rec *r, const char *auth_type))
- AP_DECLARE(int) ap_get_basic_auth_pw(request_rec *r, const char **pw);
- #define AP_GET_BASIC_AUTH_PW_NOTE "AP_GET_BASIC_AUTH_PW_NOTE"
- AP_DECLARE(apr_status_t) ap_get_basic_auth_components(const request_rec *r,
- const char **username,
- const char **password);
- AP_CORE_DECLARE(void) ap_parse_uri(request_rec *r, const char *uri);
- #define AP_GETLINE_FOLD 1
- #define AP_GETLINE_CRLF 2
- #define AP_GETLINE_NOSPC_EOL 4
- AP_DECLARE(int) ap_getline(char *s, int n, request_rec *r, int flags);
- #if APR_CHARSET_EBCDIC
- AP_DECLARE(apr_status_t) ap_rgetline(char **s, apr_size_t n,
- apr_size_t *read,
- request_rec *r, int flags,
- apr_bucket_brigade *bb);
- #else
- #define ap_rgetline(s, n, read, r, fold, bb) \
- ap_rgetline_core((s), (n), (read), (r), (fold), (bb))
- #endif
- AP_DECLARE(apr_status_t) ap_rgetline_core(char **s, apr_size_t n,
- apr_size_t *read,
- request_rec *r, int flags,
- apr_bucket_brigade *bb);
- AP_DECLARE(int) ap_method_number_of(const char *method);
- AP_DECLARE(const char *) ap_method_name_of(apr_pool_t *p, int methnum);
- AP_DECLARE_HOOK(void,pre_read_request,(request_rec *r, conn_rec *c))
- AP_DECLARE_HOOK(int,post_read_request,(request_rec *r))
- AP_DECLARE_HOOK(int,log_transaction,(request_rec *r))
- AP_DECLARE_HOOK(const char *,http_scheme,(const request_rec *r))
- AP_DECLARE_HOOK(apr_port_t,default_port,(const request_rec *r))
- #define AP_PROTOCOL_HTTP1 "http/1.1"
- AP_DECLARE_HOOK(int,protocol_propose,(conn_rec *c, request_rec *r,
- server_rec *s,
- const apr_array_header_t *offers,
- apr_array_header_t *proposals))
- AP_DECLARE_HOOK(int,protocol_switch,(conn_rec *c, request_rec *r,
- server_rec *s,
- const char *protocol))
- AP_DECLARE_HOOK(const char *,protocol_get,(const conn_rec *c))
- AP_DECLARE(apr_status_t) ap_get_protocol_upgrades(conn_rec *c, request_rec *r,
- server_rec *s, int report_all,
- const apr_array_header_t **pupgrades);
-
- AP_DECLARE(const char *) ap_select_protocol(conn_rec *c, request_rec *r,
- server_rec *s,
- const apr_array_header_t *choices);
- AP_DECLARE(apr_status_t) ap_switch_protocol(conn_rec *c, request_rec *r,
- server_rec *s,
- const char *protocol);
- AP_DECLARE(const char *) ap_get_protocol(conn_rec *c);
- AP_DECLARE(int) ap_is_allowed_protocol(conn_rec *c, request_rec *r,
- server_rec *s, const char *protocol);
- typedef struct ap_bucket_error ap_bucket_error;
- struct ap_bucket_error {
-
- apr_bucket_refcount refcount;
-
- int status;
-
- const char *data;
- };
- AP_DECLARE_DATA extern const apr_bucket_type_t ap_bucket_type_error;
- #define AP_BUCKET_IS_ERROR(e) (e->type == &ap_bucket_type_error)
- AP_DECLARE(apr_bucket *) ap_bucket_error_make(apr_bucket *b, int error,
- const char *buf, apr_pool_t *p);
- AP_DECLARE(apr_bucket *) ap_bucket_error_create(int error, const char *buf,
- apr_pool_t *p,
- apr_bucket_alloc_t *list);
- AP_DECLARE_NONSTD(apr_status_t) ap_byterange_filter(ap_filter_t *f, apr_bucket_brigade *b);
- AP_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f, apr_bucket_brigade *b);
- AP_DECLARE_NONSTD(apr_status_t) ap_content_length_filter(ap_filter_t *,
- apr_bucket_brigade *);
- AP_DECLARE_NONSTD(apr_status_t) ap_old_write_filter(ap_filter_t *f, apr_bucket_brigade *b);
- AP_DECLARE(void) ap_set_sub_req_protocol(request_rec *rnew, const request_rec *r);
- AP_DECLARE(void) ap_finalize_sub_req_protocol(request_rec *sub_r);
- AP_DECLARE(void) ap_send_interim_response(request_rec *r, int send_headers);
- #ifdef __cplusplus
- }
- #endif
- #endif
|