mod_core.h revision ed6608b05c17ad82dd9391739af837256bdffb42
6de8046f8f7e07cd83895a528df25d977e502c76nd/* Licensed to the Apache Software Foundation (ASF) under one or more
f062ed7bd262a37a909dd77ce5fc23b446818823fielding * contributor license agreements. See the NOTICE file distributed with
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd * this work for additional information regarding copyright ownership.
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd * The ASF licenses this file to You under the Apache License, Version 2.0
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd * (the "License"); you may not use this file except in compliance with
2d2eda71267231c2526be701fe655db125852c1ffielding * the License. You may obtain a copy of the License at
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd *
2d2eda71267231c2526be701fe655db125852c1ffielding * http://www.apache.org/licenses/LICENSE-2.0
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd *
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd * Unless required by applicable law or agreed to in writing, software
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd * distributed under the License is distributed on an "AS IS" BASIS,
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ce9621257ef9e54c1bbe5ad8a5f445a1f211c2dcnd * See the License for the specific language governing permissions and
2d2eda71267231c2526be701fe655db125852c1ffielding * limitations under the License.
2d2eda71267231c2526be701fe655db125852c1ffielding */
2d2eda71267231c2526be701fe655db125852c1ffielding
2d2eda71267231c2526be701fe655db125852c1ffielding
2d2eda71267231c2526be701fe655db125852c1ffielding/**
fcc25eda7b150e226d3c1cdaea66a943d3fdee4erbb * @file mod_core.h
b980ad7fdc218b4855cde9f75a747527f50c554dwrowe * @brief mod_core private header file
ab5581cc78e9d865b0a6ab1404c53347b3276968rbb *
92f3af936ce61f25358a3ee4f28df2f6d62040dfdreid * @defgroup MOD_CORE mod_core
fcc25eda7b150e226d3c1cdaea66a943d3fdee4erbb * @ingroup APACHE_MODS
c9a95767fbf0f5fb0976a06b97a256033925e433rbb * @{
fd0edaa8e3d4dd67d0604ccef2e96b071db96643fielding */
2d2eda71267231c2526be701fe655db125852c1ffielding
2d2eda71267231c2526be701fe655db125852c1ffielding#ifndef MOD_CORE_H
2d2eda71267231c2526be701fe655db125852c1ffielding#define MOD_CORE_H
2d2eda71267231c2526be701fe655db125852c1ffielding
61fd0cab072a05b855cbef9c585702401ac5ae29rbb#include "apr.h"
61fd0cab072a05b855cbef9c585702401ac5ae29rbb#include "apr_buckets.h"
61fd0cab072a05b855cbef9c585702401ac5ae29rbb
61fd0cab072a05b855cbef9c585702401ac5ae29rbb#include "httpd.h"
52de7a47876ce1748910cf3a0ee97f78842fab54rederpj#include "util_filter.h"
52de7a47876ce1748910cf3a0ee97f78842fab54rederpj
52de7a47876ce1748910cf3a0ee97f78842fab54rederpj
52de7a47876ce1748910cf3a0ee97f78842fab54rederpj#ifdef __cplusplus
52de7a47876ce1748910cf3a0ee97f78842fab54rederpjextern "C" {
52de7a47876ce1748910cf3a0ee97f78842fab54rederpj#endif
52de7a47876ce1748910cf3a0ee97f78842fab54rederpj
fd492f9543f14fb5bae78e04b135c3448eb9cc56rbb/* Handles for core filters */
fd492f9543f14fb5bae78e04b135c3448eb9cc56rbbAP_DECLARE_DATA extern ap_filter_rec_t *ap_http_input_filter_handle;
fd492f9543f14fb5bae78e04b135c3448eb9cc56rbbAP_DECLARE_DATA extern ap_filter_rec_t *ap_http_header_filter_handle;
fd492f9543f14fb5bae78e04b135c3448eb9cc56rbbAP_DECLARE_DATA extern ap_filter_rec_t *ap_chunk_filter_handle;
fd492f9543f14fb5bae78e04b135c3448eb9cc56rbbAP_DECLARE_DATA extern ap_filter_rec_t *ap_http_outerror_filter_handle;
2d2eda71267231c2526be701fe655db125852c1ffieldingAP_DECLARE_DATA extern ap_filter_rec_t *ap_byterange_filter_handle;
2d2eda71267231c2526be701fe655db125852c1ffielding
2d2eda71267231c2526be701fe655db125852c1ffielding/*
2d2eda71267231c2526be701fe655db125852c1ffielding * These (input) filters are internal to the mod_core operation.
2d2eda71267231c2526be701fe655db125852c1ffielding */
61fd0cab072a05b855cbef9c585702401ac5ae29rbbapr_status_t ap_http_filter(ap_filter_t *f, apr_bucket_brigade *b,
61fd0cab072a05b855cbef9c585702401ac5ae29rbb ap_input_mode_t mode, apr_read_type_e block,
61fd0cab072a05b855cbef9c585702401ac5ae29rbb apr_off_t readbytes);
61fd0cab072a05b855cbef9c585702401ac5ae29rbb
61fd0cab072a05b855cbef9c585702401ac5ae29rbb/* HTTP/1.1 chunked transfer encoding filter. */
2d2eda71267231c2526be701fe655db125852c1ffieldingapr_status_t ap_http_chunk_filter(ap_filter_t *f, apr_bucket_brigade *b);
2d2eda71267231c2526be701fe655db125852c1ffielding
8af88bd6958b80c224e964892b8237720b13ab1ajerenkrantz/* Filter to handle any error buckets on output */
8af88bd6958b80c224e964892b8237720b13ab1ajerenkrantzapr_status_t ap_http_outerror_filter(ap_filter_t *f,
8af88bd6958b80c224e964892b8237720b13ab1ajerenkrantz apr_bucket_brigade *b);
8af88bd6958b80c224e964892b8237720b13ab1ajerenkrantz
50e60f30bdc074fbc887f0b98f4d570457ac97c9brianpchar *ap_response_code_string(request_rec *r, int error_index);
50e60f30bdc074fbc887f0b98f4d570457ac97c9brianp
50e60f30bdc074fbc887f0b98f4d570457ac97c9brianp/**
50e60f30bdc074fbc887f0b98f4d570457ac97c9brianp * Send the minimal part of an HTTP response header.
50e60f30bdc074fbc887f0b98f4d570457ac97c9brianp * @param r The current request
50e60f30bdc074fbc887f0b98f4d570457ac97c9brianp * @param bb The brigade to add the header to.
50e60f30bdc074fbc887f0b98f4d570457ac97c9brianp * @warning Modules should be very careful about using this, and should
50e60f30bdc074fbc887f0b98f4d570457ac97c9brianp * the default behavior. Much of the HTTP/1.1 implementation
50e60f30bdc074fbc887f0b98f4d570457ac97c9brianp * correctness depends on the full headers.
50e60f30bdc074fbc887f0b98f4d570457ac97c9brianp * @fn void ap_basic_http_header(request_rec *r, apr_bucket_brigade *bb)
8af88bd6958b80c224e964892b8237720b13ab1ajerenkrantz */
bfb62a96023822c56c9120e4ee627d4091cc59c2rbbAP_DECLARE(void) ap_basic_http_header(request_rec *r, apr_bucket_brigade *bb);
bfb62a96023822c56c9120e4ee627d4091cc59c2rbb
61fd0cab072a05b855cbef9c585702401ac5ae29rbb/**
61fd0cab072a05b855cbef9c585702401ac5ae29rbb * Send an appropriate response to an http TRACE request.
61fd0cab072a05b855cbef9c585702401ac5ae29rbb * @param r The current request
61fd0cab072a05b855cbef9c585702401ac5ae29rbb * @note returns DONE or the HTTP status error if it handles the TRACE,
61fd0cab072a05b855cbef9c585702401ac5ae29rbb * or DECLINED if the request was not for TRACE.
61fd0cab072a05b855cbef9c585702401ac5ae29rbb * request method was not TRACE.
3d96ee83babeec32482c9082c9426340cee8c44dwrowe */
2d2eda71267231c2526be701fe655db125852c1ffieldingAP_DECLARE_NONSTD(int) ap_send_http_trace(request_rec *r);
61fd0cab072a05b855cbef9c585702401ac5ae29rbb
61fd0cab072a05b855cbef9c585702401ac5ae29rbb/**
61fd0cab072a05b855cbef9c585702401ac5ae29rbb * Send an appropriate response to an http OPTIONS request.
61fd0cab072a05b855cbef9c585702401ac5ae29rbb * @param r The current request
61fd0cab072a05b855cbef9c585702401ac5ae29rbb */
61fd0cab072a05b855cbef9c585702401ac5ae29rbbAP_DECLARE(int) ap_send_http_options(request_rec *r);
61fd0cab072a05b855cbef9c585702401ac5ae29rbb
61fd0cab072a05b855cbef9c585702401ac5ae29rbb/* Used for multipart/byteranges boundary string */
61fd0cab072a05b855cbef9c585702401ac5ae29rbbAP_DECLARE_DATA extern const char *ap_multipart_boundary;
2d2eda71267231c2526be701fe655db125852c1ffielding
3d96ee83babeec32482c9082c9426340cee8c44dwrowe/* Init RNG at startup */
2d2eda71267231c2526be701fe655db125852c1ffieldingAP_CORE_DECLARE(void) ap_init_rng(apr_pool_t *p);
2d2eda71267231c2526be701fe655db125852c1ffielding/* Update RNG state in parent after fork */
2d2eda71267231c2526be701fe655db125852c1ffieldingAP_CORE_DECLARE(void) ap_random_parent_after_fork(void);
2d2eda71267231c2526be701fe655db125852c1ffielding
000b67449410515eac43e76ef6667915bfd4d2abgstein#ifdef __cplusplus
2d2eda71267231c2526be701fe655db125852c1ffielding}
2d2eda71267231c2526be701fe655db125852c1ffielding#endif
2d2eda71267231c2526be701fe655db125852c1ffielding
61fd0cab072a05b855cbef9c585702401ac5ae29rbb#endif /* !MOD_CORE_H */
61fd0cab072a05b855cbef9c585702401ac5ae29rbb/** @} */
61fd0cab072a05b855cbef9c585702401ac5ae29rbb