From 0ef9c0b48c3ef484004231878a6c8c1e9c33a2b3 Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Thu, 1 Sep 2005 07:06:28 +0000 Subject: [PATCH] - introduce a force flag for no_cache --- http_send_api.c | 10 +++++----- php_http_send_api.h | 17 ++++++++++------- 2 files changed, 15 insertions(+), 12 deletions(-) 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); diff --git a/php_http_send_api.h b/php_http_send_api.h index 84a0858..8845afd 100644 --- a/php_http_send_api.h +++ b/php_http_send_api.h @@ -57,13 +57,16 @@ PHP_HTTP_API STATUS _http_send_content_disposition(const char *filename, size_t PHP_HTTP_API STATUS _http_send_ranges(HashTable *ranges, const void *data, size_t size, http_send_mode mode TSRMLS_DC); #define http_send_data(d, l) http_send((d), (l), SEND_DATA) -#define http_send(d, s, m) _http_send((d), (s), (m) TSRMLS_CC) -PHP_HTTP_API STATUS _http_send(const void *data, size_t data_size, http_send_mode mode TSRMLS_DC); - -#define http_send_file(f) http_send_stream_ex(php_stream_open_wrapper(f, "rb", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL), 1) -#define http_send_stream(s) http_send_stream_ex((s), 0) -#define http_send_stream_ex(s, c) _http_send_stream_ex((s), (c) TSRMLS_CC) -PHP_HTTP_API STATUS _http_send_stream_ex(php_stream *s, zend_bool close_stream TSRMLS_DC); +#define http_send_data_ex(d, l, nc) http_send_ex((d), (l), SEND_DATA, (nc)) +#define http_send(d, s, m) _http_send_ex((d), (s), (m), 0 TSRMLS_CC) +#define http_send_ex(d, s, m, nc) _http_send_ex((d), (s), (m), (nc) TSRMLS_CC) +PHP_HTTP_API STATUS _http_send_ex(const void *data, size_t data_size, http_send_mode mode, zend_bool no_cache TSRMLS_DC); + +#define http_send_file(f) http_send_stream_ex(php_stream_open_wrapper(f, "rb", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL), 1, 0) +#define http_send_file_ex(f, nc) http_send_stream_ex(php_stream_open_wrapper(f, "rb", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL), 1, (nc)) +#define http_send_stream(s) http_send_stream_ex((s), 0, 0) +#define http_send_stream_ex(s, c, nc) _http_send_stream_ex((s), (c), (nc) TSRMLS_CC) +PHP_HTTP_API STATUS _http_send_stream_ex(php_stream *s, zend_bool close_stream, zend_bool no_cache TSRMLS_DC); #endif -- 2.30.2