亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? http_protocol.h

?? Apache_2.0.59-Openssl_0.9 配置tomcat. Apache_2.0.59-Openssl_0.9 配置tomcat.
?? H
?? 第 1 頁 / 共 2 頁
字號:
/* Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef APACHE_HTTP_PROTOCOL_H
#define APACHE_HTTP_PROTOCOL_H

#include "httpd.h"
#include "apr_hooks.h"
#include "apr_portable.h"
#include "apr_mmap.h"
#include "apr_buckets.h"
#include "util_filter.h"

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @package HTTP protocol handling
 */

/**
 * This hook allows modules to insert filters for the current error response
 * @param r the current request
 * @ingroup hooks
 */
AP_DECLARE_HOOK(void,insert_error_filter,(request_rec *r))

/* This is an optimization.  We keep a record of the filter_rec that
 * stores the old_write filter, so that we can avoid strcmp's later.
 */
AP_DECLARE_DATA extern ap_filter_rec_t *ap_old_write_func;

/*
 * Prototypes for routines which either talk directly back to the user,
 * or control the ones that eventually do.
 */

/**
 * Read a request and fill in the fields.
 * @param c The current connection
 * @return The new request_rec
 */ 
request_rec *ap_read_request(conn_rec *c);

/**
 * Read the mime-encoded headers.
 * @param r The current request
 */
AP_DECLARE(void) ap_get_mime_headers(request_rec *r);

/**
 * Optimized version of ap_get_mime_headers() that requires a
 * temporary brigade to work with
 * @param r The current request
 * @param bb temp brigade
 */
AP_DECLARE(void) ap_get_mime_headers_core(request_rec *r,
                                          apr_bucket_brigade *bb);

/* Finish up stuff after a request */

/**
 * Called at completion of sending the response.  It sends the terminating
 * protocol information.
 * @param r The current request
 * @deffunc void ap_finalize_request_protocol(request_rec *r)
 */
AP_DECLARE(void) ap_finalize_request_protocol(request_rec *r);

/**
 * Send error back to client.
 * @param r The current request
 * @param recursive_error last arg indicates error status in case we get 
 *      an error in the process of trying to deal with an ErrorDocument 
 *      to handle some other error.  In that case, we print the default 
 *      report for the first thing that went wrong, and more briefly report 
 *      on the problem with the ErrorDocument.
 * @deffunc void ap_send_error_response(request_rec *r, int recursive_error)
 */
AP_DECLARE(void) ap_send_error_response(request_rec *r, int recursive_error);

/* Set last modified header line from the lastmod date of the associated file.
 * Also, set content length.
 *
 * May return an error status, typically HTTP_NOT_MODIFIED (that when the
 * permit_cache argument is set to one).
 */

/**
 * Set the content length for this request
 * @param r The current request
 * @param length The new content length
 * @deffunc void ap_set_content_length(request_rec *r, apr_off_t length)
 */
AP_DECLARE(void) ap_set_content_length(request_rec *r, apr_off_t length);

/**
 * Set the keepalive status for this request
 * @param r The current request
 * @return 1 if keepalive can be set, 0 otherwise
 * @deffunc int ap_set_keepalive(request_rec *r)
 */
AP_DECLARE(int) ap_set_keepalive(request_rec *r);

/**
 * Return the latest rational time from a request/mtime pair.  Mtime is 
 * returned unless it's in the future, in which case we return the current time.
 * @param r The current request
 * @param mtime The last modified time
 * @return the latest rational time.
 * @deffunc apr_time_t ap_rationalize_mtime(request_rec *r, apr_time_t mtime)
 */
AP_DECLARE(apr_time_t) ap_rationalize_mtime(request_rec *r, apr_time_t mtime);

/**
 * Build the content-type that should be sent to the client from the
 * content-type specified.  The following rules are followed:
 *    - if type is NULL, type is set to ap_default_type(r)
 *    - if charset adding is disabled, stop processing and return type.
 *    - then, if there are no parameters on type, add the default charset
 *    - return type
 * @param r The current request
 * @return The content-type
 * @deffunc const char *ap_make_content_type(request_rec *r, const char *type);
 */ 
AP_DECLARE(const char *) ap_make_content_type(request_rec *r,
                                              const char *type);

#ifdef CORE_PRIVATE
/**
 * Precompile metadata structures used by ap_make_content_type()
 * @param r The pool to use for allocations
 * @deffunc void ap_setup_make_content_type(apr_pool_t *pool)
 */
AP_DECLARE(void) ap_setup_make_content_type(apr_pool_t *pool);
#endif /* CORE_PRIVATE */

/**
 * Construct an entity tag from the resource information.  If it's a real
 * file, build in some of the file characteristics.
 * @param r The current request
 * @param force_weak Force the entity tag to be weak - it could be modified
 *                   again in as short an interval.
 * @return The entity tag
 * @deffunc char *ap_make_etag(request_rec *r, int force_weak)
 */ 
AP_DECLARE(char *) ap_make_etag(request_rec *r, int force_weak);

/**
 * Set the E-tag outgoing header
 * @param The current request
 * @deffunc void ap_set_etag(request_rec *r)
 */
AP_DECLARE(void) ap_set_etag(request_rec *r);

/**
 * Set the last modified time for the file being sent
 * @param r The current request
 * @deffunc void ap_set_last_modified(request_rec *r)
 */
AP_DECLARE(void) ap_set_last_modified(request_rec *r);

/**
 * Implements condition GET rules for HTTP/1.1 specification.  This function
 * inspects the client headers and determines if the response fulfills 
 * the requirements specified.
 * @param r The current request
 * @return OK if the response fulfills the condition GET rules, some
 *         other status code otherwise
 * @deffunc int ap_meets_conditions(request_rec *r)
 */
AP_DECLARE(int) ap_meets_conditions(request_rec *r);

/* Other ways to send stuff at the client.  All of these keep track
 * of bytes_sent automatically.  This indirection is intended to make
 * it a little more painless to slide things like HTTP-NG packetization
 * underneath the main body of the code later.  In the meantime, it lets
 * us centralize a bit of accounting (bytes_sent).
 *
 * These also return the number of bytes written by the call.
 * They should only be called with a timeout registered, for obvious reaasons.
 * (Ditto the send_header stuff).
 */

/**
 * Send an entire file to the client, using sendfile if supported by the 
 * current platform
 * @param fd The file to send.
 * @param r The current request
 * @param offset Offset into the file to start sending.
 * @param length Amount of data to send
 * @param nbytes Amount of data actually sent
 * @deffunc 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);
 */
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
/**
 * Send an MMAP'ed file to the client
 * @param mm The MMAP'ed file to send
 * @param r The current request
 * @param offset The offset into the MMAP to start sending
 * @param length The amount of data to send
 * @return The number of bytes sent
 * @deffunc size_t ap_send_mmap(apr_mmap_t *mm, request_rec *r, size_t offset, size_t length)
 */
AP_DECLARE(size_t) ap_send_mmap(apr_mmap_t *mm, request_rec *r, size_t offset,
                             size_t length);
#endif


/**
 * Register a new request method, and return the offset that will be
 * associated with that method.
 *
 * @param p        The pool to create registered method numbers from.
 * @param methname The name of the new method to register.
 * @return         Ab int value representing an offset into a bitmask.
 */
AP_DECLARE(int) ap_method_register(apr_pool_t *p, const char *methname);

/**
 * Initialize the method_registry and allocate memory for it.
 *
 * @param p Pool to allocate memory for the registry from.
 */
AP_DECLARE(void) ap_method_registry_init(apr_pool_t *p);

/*
 * This is a convenience macro to ease with checking a mask
 * against a method name.
 */
#define AP_METHOD_CHECK_ALLOWED(mask, methname) \
    ((mask) & (AP_METHOD_BIT << ap_method_number_of((methname))))

/**
 * Create a new method list with the specified number of preallocated
 * slots for extension methods.
 *
 * @param   p       Pointer to a pool in which the structure should be
 *                  allocated.
 * @param   nelts   Number of preallocated extension slots
 * @return  Pointer to the newly created structure.
 * @deffunc ap_method_list_t ap_make_method_list(apr_pool_t *p, int nelts)
 */
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_NONSTD(void) ap_method_list_do(int (*comp) (void *urec, const char *mname,
						       int mnum),
				          void *rec,
				          const ap_method_list_t *ml, ...);
AP_DECLARE(void) ap_method_list_vdo(int (*comp) (void *urec, const char *mname,
						 int mnum),
				    void *rec, const ap_method_list_t *ml,
				    va_list vp);
/**
 * Search for an HTTP method name in an ap_method_list_t structure, and
 * return true if found.
 *
 * @param   method  String containing the name of the method to check.
 * @param   l       Pointer to a method list, such as cmd->methods_limited.
 * @return  1 if method is in the list, otherwise 0
 * @deffunc int ap_method_in_list(const char *method, ap_method_list_t *l)
 */
AP_DECLARE(int) ap_method_in_list(ap_method_list_t *l, const char *method);

/**
 * Add an HTTP method name to an ap_method_list_t structure if it isn't
 * already listed.
 *
 * @param   method  String containing the name of the method to check.
 * @param   l       Pointer to a method list, such as cmd->methods_limited.
 * @return  None.
 * @deffunc void 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);
    
/**
 * Remove an HTTP method name from an ap_method_list_t structure.
 *
 * @param   l       Pointer to a method list, such as cmd->methods_limited.
 * @param   method  String containing the name of the method to remove.
 * @return  None.
 * @deffunc void ap_method_list_remove(ap_method_list_t *l, const char *method)
 */
AP_DECLARE(void) ap_method_list_remove(ap_method_list_t *l,
				       const char *method);

/**
 * Reset a method list to be completely empty.
 *
 * @param   l       Pointer to a method list, such as cmd->methods_limited.
 * @return  None.
 * @deffunc void ap_clear_method_list(ap_method_list_t *l)
 */
AP_DECLARE(void) ap_clear_method_list(ap_method_list_t *l);
    
/**
 * Set the content type for this request (r->content_type). 
 * @param r The current request
 * @param ct The new content type
 * @deffunc void ap_set_content_type(request_rec *r, const char* ct)
 * @warning This function must be called to set r->content_type in order 
 * for the AddOutputFilterByType directive to work correctly.
 */
AP_DECLARE(void) ap_set_content_type(request_rec *r, const char *ct);

/* Hmmm... could macrofy these for now, and maybe forever, though the
 * definitions of the macros would get a whole lot hairier.
 */

/**
 * Output one character for this request
 * @param c the character to output
 * @param r the current request
 * @return The number of bytes sent
 * @deffunc int ap_rputc(int c, request_rec *r)
 */
AP_DECLARE(int) ap_rputc(int c, request_rec *r);

/**
 * Output a string for the current request
 * @param str The string to output
 * @param r The current request
 * @return The number of bytes sent
 * @deffunc int ap_rputs(const char *str, request_rec *r)
 */
AP_DECLARE(int) ap_rputs(const char *str, request_rec *r);

/**
 * Write a buffer for the current request
 * @param buf The buffer to write
 * @param nbyte The number of bytes to send from the buffer

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲三级久久久| 精品久久国产97色综合| 99久久婷婷国产综合精品| 理论电影国产精品| 狠狠色2019综合网| 国产精品一二一区| 成人一区二区三区在线观看| 国产乱码精品一区二区三区五月婷| 精品一区二区三区欧美| 国产一区二区三区不卡在线观看| 九九精品视频在线看| 精久久久久久久久久久| 高清在线不卡av| 97超碰欧美中文字幕| 欧美调教femdomvk| 日韩女优毛片在线| 欧美性大战久久| 日本一二三四高清不卡| 国产精品每日更新| 亚洲精品国久久99热| 午夜国产不卡在线观看视频| 秋霞电影网一区二区| 国产一区免费电影| 成人av在线看| 欧美日韩国产精品成人| 欧美成人精品1314www| 国产精品国产三级国产普通话99 | 开心九九激情九九欧美日韩精美视频电影 | 337p粉嫩大胆色噜噜噜噜亚洲| 久久久久97国产精华液好用吗| 亚洲欧洲中文日韩久久av乱码| 午夜电影久久久| 成人免费视频一区| 宅男在线国产精品| 国产精品久久毛片| 日韩激情视频在线观看| 成人av电影在线网| 制服丝袜av成人在线看| 综合欧美亚洲日本| 精品中文字幕一区二区小辣椒| 成人中文字幕合集| 日韩一级免费观看| 亚洲一区二区三区影院| 国产精品 日产精品 欧美精品| 欧美性受xxxx黑人xyx性爽| 国产片一区二区三区| 亚洲成在线观看| 成人va在线观看| 日韩视频在线观看一区二区| 一区二区三区四区av| 国产一区二区调教| 欧美吻胸吃奶大尺度电影 | 欧美日韩另类一区| 国产精品久久久爽爽爽麻豆色哟哟| 日韩福利视频网| 色噜噜狠狠一区二区三区果冻| 久久青草欧美一区二区三区| 亚洲成人av中文| 色狠狠色狠狠综合| 亚洲欧洲精品天堂一级| 高清久久久久久| 国产视频视频一区| 激情五月婷婷综合网| 91精品午夜视频| 亚洲一区在线观看免费观看电影高清| 成人免费看黄yyy456| 中文字幕精品在线不卡| 激情综合色播激情啊| 欧美v日韩v国产v| 美女mm1313爽爽久久久蜜臀| 欧美精品粉嫩高潮一区二区| 天天av天天翘天天综合网| 欧美亚洲自拍偷拍| 一区二区三区在线免费观看 | 色94色欧美sute亚洲13| 中文字幕色av一区二区三区| 丁香啪啪综合成人亚洲小说| 中国色在线观看另类| 国产99久久精品| 中文成人av在线| thepron国产精品| 一区二区在线观看视频在线观看| 一本久久a久久精品亚洲| 亚洲卡通动漫在线| 欧美午夜片在线看| 美女精品自拍一二三四| 久久久亚洲高清| 成人精品免费网站| 一区二区三区在线视频免费观看| 欧美色图片你懂的| 喷白浆一区二区| 国产亚洲一本大道中文在线| 成人精品在线视频观看| 一区二区高清免费观看影视大全| 在线观看www91| 人人精品人人爱| 国产午夜精品一区二区三区嫩草 | 亚洲免费观看高清完整版在线观看熊 | 日日夜夜精品视频天天综合网| 正在播放亚洲一区| 丰满白嫩尤物一区二区| 一区二区三区在线免费播放| 欧美人狂配大交3d怪物一区| 久久99国产精品久久| 亚洲国产精品成人久久综合一区| 99久久国产综合色|国产精品| 亚洲一区二三区| 26uuu久久天堂性欧美| 99国产麻豆精品| 美女在线观看视频一区二区| 国产精品全国免费观看高清| 欧美丝袜丝nylons| 国产精品自在欧美一区| 亚洲综合在线视频| 久久婷婷一区二区三区| 欧美中文一区二区三区| 黄色日韩三级电影| 亚洲一二三专区| 中文天堂在线一区| 精品国产成人系列| 欧美日韩亚洲另类| 成人免费黄色大片| 韩国一区二区视频| 午夜精品久久久久久久99水蜜桃| 中文字幕制服丝袜成人av| 日韩三级免费观看| 欧美日韩亚洲综合一区| 95精品视频在线| 成年人国产精品| 国产精品一区二区在线观看不卡| 亚洲 欧美综合在线网络| 久久久99免费| 精品久久人人做人人爽| 制服.丝袜.亚洲.中文.综合| 欧美性大战久久久久久久 | 三级在线观看一区二区| 最新国产成人在线观看| 国产欧美日韩卡一| 欧美va亚洲va香蕉在线| 欧美一区欧美二区| 欧美日韩免费在线视频| 在线观看视频一区二区| 91网站最新网址| 成人精品gif动图一区| 经典三级一区二区| 精品一区二区三区欧美| 久久99国产精品久久| 国内成+人亚洲+欧美+综合在线| 日日夜夜精品视频天天综合网| 亚洲成在人线免费| 午夜国产精品一区| 五月激情丁香一区二区三区| 婷婷丁香激情综合| 男男成人高潮片免费网站| 蜜桃在线一区二区三区| 久久精品国产99国产精品| 日韩av高清在线观看| 六月丁香婷婷色狠狠久久| 美腿丝袜一区二区三区| 国产一区二区三区国产| 国产乱码精品一品二品| 国产91精品一区二区麻豆网站| 成人午夜视频福利| 色婷婷综合在线| 欧美日韩一区二区三区视频| 日韩欧美一区二区视频| 精品国产免费人成电影在线观看四季| 欧美tickling挠脚心丨vk| 久久亚洲私人国产精品va媚药| 国产欧美视频一区二区三区| 中文无字幕一区二区三区| 亚洲精品少妇30p| 视频一区视频二区在线观看| 久久国产三级精品| 国产91在线观看丝袜| 欧美性色综合网| 日韩欧美国产三级| 亚洲天天做日日做天天谢日日欢| 亚洲一区二区视频| 国内精品不卡在线| 91麻豆6部合集magnet| 9191成人精品久久| 国产三级一区二区三区| 亚洲综合另类小说| 激情文学综合网| 欧洲av在线精品| 久久九九久精品国产免费直播| 一区二区三区在线视频观看| 久久精品国产99| 91久久精品国产91性色tv| 日韩欧美123| 亚洲综合视频在线| 国产乱码一区二区三区| 欧美日韩小视频| 成人欧美一区二区三区| 九色综合国产一区二区三区| 91国产福利在线| 国产清纯美女被跳蛋高潮一区二区久久w | 久久99这里只有精品| 欧美在线你懂得|