}
}
+ /* now try to find an appropriate POST content handler */
if (zend_hash_find(&known_post_content_types, content_type, content_type_length+1, (void **) &post_entry)==SUCCESS) {
+ /* found one, register it for use */
SG(request_info).post_entry = post_entry;
post_reader_func = post_entry->post_reader;
} else {
+ /* fallback */
+ SG(request_info).post_entry = NULL;
if (!sapi_module.default_post_reader) {
+ /* no default reader ? */
sapi_module.sapi_error(E_WARNING, "Unsupported content type: '%s'", content_type);
return;
}
- SG(request_info).post_entry = NULL;
}
if (oldchar) {
*(p-1) = oldchar;
*/
SAPI_API SAPI_POST_READER_FUNC(php_default_post_reader)
{
- char *data;
+ char *data = NULL;
if(PG(always_populate_raw_post_data)) {
- if(!SG(request_info).post_data) sapi_read_standard_form_data(TSRMLS_C);
- data = estrndup(SG(request_info).post_data, SG(request_info).post_data_length);
- SET_VAR_STRINGL("HTTP_RAW_POST_DATA", data, SG(request_info).post_data_length);
+ if(NULL == SG(request_info).post_data) { /* no data yet */
+ if(NULL == SG(request_info).post_entry) {
+ /* no post handler registered, so we just swallow the data */
+ sapi_read_standard_form_data(TSRMLS_C);
+ data = SG(request_info).post_data;
+ SG(request_info).post_data = NULL;
+ SG(request_info).post_data_length = 0;
+ }
+ } else {
+ /* copy existing post data */
+ data = estrndup(SG(request_info).post_data, SG(request_info).post_data_length);
+ }
+
+ if(data) {
+ SET_VAR_STRINGL("HTTP_RAW_POST_DATA", data, SG(request_info).post_data_length);
+ }
}
}
/* }}} */