Annotation of embedaddon/php/main/php_content_types.c, revision 1.1
1.1 ! misho 1: /*
! 2: +----------------------------------------------------------------------+
! 3: | PHP Version 5 |
! 4: +----------------------------------------------------------------------+
! 5: | Copyright (c) 1997-2012 The PHP Group |
! 6: +----------------------------------------------------------------------+
! 7: | This source file is subject to version 3.01 of the PHP license, |
! 8: | that is bundled with this package in the file LICENSE, and is |
! 9: | available through the world-wide-web at the following url: |
! 10: | http://www.php.net/license/3_01.txt |
! 11: | If you did not receive a copy of the PHP license and are unable to |
! 12: | obtain it through the world-wide-web, please send a note to |
! 13: | license@php.net so we can mail you a copy immediately. |
! 14: +----------------------------------------------------------------------+
! 15: | Author: |
! 16: +----------------------------------------------------------------------+
! 17: */
! 18:
! 19: /* $Id: php_content_types.c 321634 2012-01-01 13:15:04Z felipe $ */
! 20:
! 21: #include "php.h"
! 22: #include "SAPI.h"
! 23: #include "rfc1867.h"
! 24:
! 25: #include "php_content_types.h"
! 26:
! 27: /* {{{ php_post_entries[]
! 28: */
! 29: static sapi_post_entry php_post_entries[] = {
! 30: { DEFAULT_POST_CONTENT_TYPE, sizeof(DEFAULT_POST_CONTENT_TYPE)-1, sapi_read_standard_form_data, php_std_post_handler },
! 31: { MULTIPART_CONTENT_TYPE, sizeof(MULTIPART_CONTENT_TYPE)-1, NULL, rfc1867_post_handler },
! 32: { NULL, 0, NULL, NULL }
! 33: };
! 34: /* }}} */
! 35:
! 36: /* {{{ SAPI_POST_READER_FUNC
! 37: */
! 38: SAPI_API SAPI_POST_READER_FUNC(php_default_post_reader)
! 39: {
! 40: char *data;
! 41: int length;
! 42:
! 43: /* $HTTP_RAW_POST_DATA registration */
! 44: if (!strcmp(SG(request_info).request_method, "POST")) {
! 45: if (NULL == SG(request_info).post_entry) {
! 46: /* no post handler registered, so we just swallow the data */
! 47: sapi_read_standard_form_data(TSRMLS_C);
! 48: }
! 49:
! 50: /* For unknown content types we create HTTP_RAW_POST_DATA even if always_populate_raw_post_data off,
! 51: * this is in-effecient, but we need to keep doing it for BC reasons (for now) */
! 52: if ((PG(always_populate_raw_post_data) || NULL == SG(request_info).post_entry) && SG(request_info).post_data) {
! 53: length = SG(request_info).post_data_length;
! 54: data = estrndup(SG(request_info).post_data, length);
! 55: SET_VAR_STRINGL("HTTP_RAW_POST_DATA", data, length);
! 56: }
! 57: }
! 58:
! 59: /* for php://input stream:
! 60: some post handlers modify the content of request_info.post_data
! 61: so for now we need a copy for the php://input stream
! 62: in the long run post handlers should be changed to not touch
! 63: request_info.post_data for memory preservation reasons
! 64: */
! 65: if (SG(request_info).post_data) {
! 66: SG(request_info).raw_post_data = estrndup(SG(request_info).post_data, SG(request_info).post_data_length);
! 67: SG(request_info).raw_post_data_length = SG(request_info).post_data_length;
! 68: }
! 69: }
! 70: /* }}} */
! 71:
! 72: /* {{{ php_startup_sapi_content_types
! 73: */
! 74: int php_startup_sapi_content_types(TSRMLS_D)
! 75: {
! 76: sapi_register_default_post_reader(php_default_post_reader);
! 77: sapi_register_treat_data(php_default_treat_data);
! 78: sapi_register_input_filter(php_default_input_filter, NULL);
! 79: return SUCCESS;
! 80: }
! 81: /* }}} */
! 82:
! 83: /* {{{ php_setup_sapi_content_types
! 84: */
! 85: int php_setup_sapi_content_types(TSRMLS_D)
! 86: {
! 87: sapi_register_post_entries(php_post_entries TSRMLS_CC);
! 88:
! 89: return SUCCESS;
! 90: }
! 91: /* }}} */
! 92:
! 93: /*
! 94: * Local variables:
! 95: * tab-width: 4
! 96: * c-basic-offset: 4
! 97: * End:
! 98: * vim600: sw=4 ts=4 fdm=marker
! 99: * vim<600: sw=4 ts=4
! 100: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>