X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=http_cache_api.c;h=b6bc23714bd292882716ae66692118290b66095e;hb=refs%2Fheads%2Fv1.7.x;hp=f7f0c816e23a67ef4b55c2e1134a8fb36b900812;hpb=b3afcfc70bf06c062115f4994cc04fc8c6e4aa67;p=m6w6%2Fext-http diff --git a/http_cache_api.c b/http_cache_api.c index f7f0c81..b6bc237 100644 --- a/http_cache_api.c +++ b/http_cache_api.c @@ -6,7 +6,7 @@ | modification, are permitted provided that the conditions mentioned | | in the accompanying LICENSE file are met. | +--------------------------------------------------------------------+ - | Copyright (c) 2004-2006, Michael Wallner | + | Copyright (c) 2004-2010, Michael Wallner | +--------------------------------------------------------------------+ */ @@ -45,9 +45,9 @@ PHP_HTTP_API char *_http_etag(const void *data_ptr, size_t data_len, http_send_m return NULL; } else { size_t ssb_len; - char ssb_buf[128] = {0}; + char ssb_buf[128]; - ssb_len = snprintf(ssb_buf, 127, "%ld=%ld=%ld", (long) ssb.sb.st_mtime, + ssb_len = snprintf(ssb_buf, sizeof(ssb_buf), "%ld=%ld=%ld", (long) ssb.sb.st_mtime, (long) ssb.sb.st_ino, (long) ssb.sb.st_size); http_etag_update(ctx, ssb_buf, ssb_len); @@ -182,13 +182,24 @@ PHP_HTTP_API STATUS _http_cache_etag(const char *etag, size_t etag_len, PHP_HTTP_API STATUS _http_start_ob_etaghandler(TSRMLS_D) { /* already running? */ +#ifdef PHP_OUTPUT_NEWAPI + STATUS rv; + + if (php_output_handler_conflict(ZEND_STRL("ob_etaghandler"), ZEND_STRL("ob_etaghandler") TSRMLS_CC)) { + return FAILURE; + } +#else if (php_ob_handler_used("ob_etaghandler" TSRMLS_CC)) { http_error(HE_WARNING, HTTP_E_RUNTIME, "ob_etaghandler can only be used once"); return FAILURE; } - +#endif HTTP_G->etag.started = 1; +#ifdef PHP_OUTPUT_NEWAPI + return php_output_start_internal(ZEND_STRL("ob_etaghandler"), _http_ob_etaghandler, HTTP_G->send.buffer_size, 0 TSRMLS_CC); +#else return php_start_ob_buffer_named("ob_etaghandler", HTTP_G->send.buffer_size, 0 TSRMLS_CC); +#endif } PHP_HTTP_API zend_bool _http_interrupt_ob_etaghandler(TSRMLS_D)