X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_functions.c;h=9bf3399d72570ba6b6eb3a4abf1caf0eeb0ff9fd;hp=96f327788c081a0e4aac36ed8ee2103d09cf61bc;hb=6c798b95130a0fe8d55f39fd859bb5333f523ccd;hpb=cf9967800843ea01e77b374b4d78fad4bc18a3f6 diff --git a/http_functions.c b/http_functions.c index 96f3277..9bf3399 100644 --- a/http_functions.c +++ b/http_functions.c @@ -249,7 +249,7 @@ PHP_FUNCTION(http_send_content_type) } if (!ct_len) { - RETURN_SUCCESS(http_send_content_type("application/x-octetstream", sizeof("application/x-octetstream") - 1)); + RETURN_SUCCESS(http_send_content_type("application/x-octetstream", lenof("application/x-octetstream"))); } RETURN_SUCCESS(http_send_content_type(ct, ct_len)); } @@ -296,9 +296,9 @@ PHP_FUNCTION(http_match_modified) } if (for_range) { - RETURN_BOOL(http_modified_match("HTTP_IF_UNMODIFIED_SINCE", t)); + RETURN_BOOL(http_match_last_modified("HTTP_IF_UNMODIFIED_SINCE", t)); } - RETURN_BOOL(http_modified_match("HTTP_IF_MODIFIED_SINCE", t)); + RETURN_BOOL(http_match_last_modified("HTTP_IF_MODIFIED_SINCE", t)); } /* }}} */ @@ -319,15 +319,15 @@ PHP_FUNCTION(http_match_etag) } if (for_range) { - RETURN_BOOL(http_etag_match("HTTP_IF_MATCH", etag)); + RETURN_BOOL(http_match_etag("HTTP_IF_MATCH", etag)); } - RETURN_BOOL(http_etag_match("HTTP_IF_NONE_MATCH", etag)); + RETURN_BOOL(http_match_etag("HTTP_IF_NONE_MATCH", etag)); } /* }}} */ /* {{{ proto bool http_cache_last_modified([int timestamp_or_expires]]) * - * If timestamp_or_exires is greater than 0, it is handled as timestamp + * If timestamp_or_expires is greater than 0, it is handled as timestamp * and will be sent as date of last modification. If it is 0 or omitted, * the current time will be sent as Last-Modified date. If it's negative, * it is handled as expiration time in seconds, which means that if the @@ -364,7 +364,7 @@ PHP_FUNCTION(http_cache_last_modified) send_modified = last_modified; } - RETURN_SUCCESS(http_cache_last_modified(last_modified, send_modified, HTTP_DEFAULT_CACHECONTROL, sizeof(HTTP_DEFAULT_CACHECONTROL) - 1)); + RETURN_SUCCESS(http_cache_last_modified(last_modified, send_modified, HTTP_DEFAULT_CACHECONTROL, lenof(HTTP_DEFAULT_CACHECONTROL))); } /* }}} */ @@ -388,17 +388,15 @@ PHP_FUNCTION(http_cache_etag) RETURN_FALSE; } - RETURN_SUCCESS(http_cache_etag(etag, etag_len, HTTP_DEFAULT_CACHECONTROL, sizeof(HTTP_DEFAULT_CACHECONTROL) - 1)); + RETURN_SUCCESS(http_cache_etag(etag, etag_len, HTTP_DEFAULT_CACHECONTROL, lenof(HTTP_DEFAULT_CACHECONTROL))); } /* }}} */ -/* {{{ proto string ob_httpetaghandler(string data, int mode) +/* {{{ proto string ob_etaghandler(string data, int mode) * * For use with ob_start(). - * Note that this has to be started as first output buffer. - * WARNING: Don't use with http_send_*(). */ -PHP_FUNCTION(ob_httpetaghandler) +PHP_FUNCTION(ob_etaghandler) { char *data; int data_len; @@ -408,20 +406,6 @@ PHP_FUNCTION(ob_httpetaghandler) RETURN_FALSE; } - if (mode & PHP_OUTPUT_HANDLER_START) { - if (HTTP_G(etag_started)) { - http_error(E_WARNING, HTTP_E_OBUFFER, "ob_httpetaghandler can only be used once"); - RETURN_STRINGL(data, data_len, 1); - } - http_send_header("Cache-Control: " HTTP_DEFAULT_CACHECONTROL); - HTTP_G(etag_started) = 1; - } - - if (OG(ob_nesting_level) > 1) { - http_error(E_WARNING, HTTP_E_OBUFFER, "ob_httpetaghandler must be started prior to other output buffers"); - RETURN_STRINGL(data, data_len, 1); - } - Z_TYPE_P(return_value) = IS_STRING; http_ob_etaghandler(data, data_len, &Z_STRVAL_P(return_value), &Z_STRLEN_P(return_value), mode); } @@ -507,7 +491,6 @@ PHP_FUNCTION(http_send_data) } convert_to_string_ex(&zdata); - http_send_header("Accept-Ranges: bytes"); RETURN_SUCCESS(http_send_data(Z_STRVAL_P(zdata), Z_STRLEN_P(zdata))); } /* }}} */ @@ -529,7 +512,6 @@ PHP_FUNCTION(http_send_file) RETURN_FALSE; } - http_send_header("Accept-Ranges: bytes"); RETURN_SUCCESS(http_send_file(file)); } /* }}} */ @@ -549,7 +531,6 @@ PHP_FUNCTION(http_send_stream) } php_stream_from_zval(file, &zstream); - http_send_header("Accept-Ranges: bytes"); RETURN_SUCCESS(http_send_stream(file)); } /* }}} */ @@ -568,7 +549,7 @@ PHP_FUNCTION(http_chunked_decode) RETURN_FALSE; } - if (SUCCESS == http_chunked_decode(encoded, encoded_len, &decoded, &decoded_len)) { + if (NULL != http_chunked_decode(encoded, encoded_len, &decoded, &decoded_len)) { RETURN_STRINGL(decoded, decoded_len, 0); } else { RETURN_FALSE; @@ -585,7 +566,7 @@ PHP_FUNCTION(http_chunked_decode) * array( - * 'Status' => '200 Ok', + * 'Response Status' => '200 Ok', * 'Content-Type' => 'text/plain', * 'Content-Language' => 'en-US' * ), @@ -624,7 +605,7 @@ PHP_FUNCTION(http_split_response) */ PHP_FUNCTION(http_parse_headers) { - char *header, *rnrn; + char *header; int header_len; if (SUCCESS != zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &header, &header_len)) { @@ -632,11 +613,7 @@ PHP_FUNCTION(http_parse_headers) } array_init(return_value); - - if (rnrn = strstr(header, HTTP_CRLF HTTP_CRLF)) { - header_len = rnrn - header + 2; - } - if (SUCCESS != http_parse_headers(header, header_len, return_value)) { + if (SUCCESS != http_parse_headers(header, return_value)) { http_error(E_WARNING, HTTP_E_PARSE, "Could not parse HTTP headers"); zval_dtor(return_value); RETURN_FALSE; @@ -1003,6 +980,7 @@ PHP_FUNCTION(http_build_query) PHP_FUNCTION(http_test) { + RETURN_NULL(); } /*