X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=http_send_api.c;h=e74d20d9564d515f9dab4547bbb39f4bb6106aa6;hp=ba6122bd08fdbe00556aed541a35cf4439baf1e0;hb=b97243b9bffae6ec360cfa7ea2dd1c7f1c3a556f;hpb=0d925a2820b9d75b8e32c451fd400863e51e22fe diff --git a/http_send_api.c b/http_send_api.c index ba6122b..e74d20d 100644 --- a/http_send_api.c +++ b/http_send_api.c @@ -337,7 +337,7 @@ PHP_HTTP_API STATUS _http_send_ranges(HashTable *ranges, const void *data, size_ /* }}} */ /* {{{ STATUS http_send(void *, size_t, http_send_mode) */ -PHP_HTTP_API STATUS _http_send(const void *data_ptr, size_t data_size, http_send_mode data_mode TSRMLS_DC) +PHP_HTTP_API STATUS _http_send_ex(const void *data_ptr, size_t data_size, http_send_mode data_mode, zend_bool no_cache TSRMLS_DC) { HashTable ranges; http_range_status range_status; @@ -381,7 +381,7 @@ PHP_HTTP_API STATUS _http_send(const void *data_ptr, size_t data_size, http_send zend_hash_destroy(&ranges); /* send 304 Not Modified if etag matches - DON'T return on ETag generation failure */ - if (cache_etag) { + if (!no_cache && cache_etag) { char *etag = NULL; if (!(etag = http_etag(data_ptr, data_size, data_mode))) { @@ -400,7 +400,7 @@ PHP_HTTP_API STATUS _http_send(const void *data_ptr, size_t data_size, http_send } /* send 304 Not Modified if last modified matches */ - if (http_match_last_modified("HTTP_IF_MODIFIED_SINCE", HTTP_G(send).last_modified)) { + if (!no_cache && http_match_last_modified("HTTP_IF_MODIFIED_SINCE", HTTP_G(send).last_modified)) { char *sent_header = NULL; http_send_last_modified_ex(HTTP_G(send).last_modified, &sent_header); return http_exit_ex(304, sent_header, NULL, 0); @@ -419,7 +419,7 @@ PHP_HTTP_API STATUS _http_send(const void *data_ptr, size_t data_size, http_send /* }}} */ /* {{{ STATUS http_send_stream(php_stream *) */ -PHP_HTTP_API STATUS _http_send_stream_ex(php_stream *file, zend_bool close_stream TSRMLS_DC) +PHP_HTTP_API STATUS _http_send_stream_ex(php_stream *file, zend_bool close_stream, zend_bool no_cache TSRMLS_DC) { STATUS status; php_stream_statbuf ssb; @@ -428,7 +428,7 @@ PHP_HTTP_API STATUS _http_send_stream_ex(php_stream *file, zend_bool close_strea return FAILURE; } - status = http_send(file, ssb.sb.st_size, SEND_RSRC); + status = http_send_ex(file, ssb.sb.st_size, SEND_RSRC, no_cache); if (close_stream) { php_stream_close(file);