- if (http_etag_match("HTTP_IF_NONE_MATCH", etag)) {
- http_send_status(304);
- zend_bailout();
- } else {
- http_send_etag(etag, 32);
- }
- }
- }
-
- *handled_output_len = output_len;
- *handled_output = estrndup(output, output_len);
-}
-/* }}} */
-
-/* {{{ STATUS http_start_ob_handler(php_output_handler_func_t, char *, uint, zend_bool) */
-PHP_HTTP_API STATUS _http_start_ob_handler(php_output_handler_func_t handler_func,
- char *handler_name, uint chunk_size, zend_bool erase TSRMLS_DC)
-{
- php_ob_buffer **stack;
- int count, i;
-
- if (count = OG(ob_nesting_level)) {
- stack = ecalloc(count, sizeof(php_ob_buffer *));
-
- if (count > 1) {
- zend_stack_apply_with_argument(&OG(ob_buffers), ZEND_STACK_APPLY_BOTTOMUP,
- (int (*)(void *elem, void *)) http_ob_stack_get, stack);
- }
-
- if (count > 0) {
- http_ob_stack_get(&OG(active_ob_buffer), stack);
- }
-
- while (OG(ob_nesting_level)) {
- php_end_ob_buffer(0, 0 TSRMLS_CC);
- }
- }
-
- php_ob_set_internal_handler(handler_func, chunk_size, handler_name, erase TSRMLS_CC);
-
- for (i = 0; i < count; i++) {
- php_ob_buffer *s = stack[i];
- if (strcmp(s->handler_name, "default output handler")) {
- php_start_ob_buffer_named(s->handler_name, s->chunk_size, s->erase TSRMLS_CC);
- }
- php_body_write(s->buffer, s->text_length TSRMLS_CC);
- efree(s->handler_name);
- efree(s->buffer);
- efree(s);
- }
- if (count) {
- efree(stack);
- }
-
- return SUCCESS;
-}
-/* }}} */
-
-/* {{{ STATUS http_chunked_decode(char *, size_t, char **, size_t *) */
-PHP_HTTP_API STATUS _http_chunked_decode(const char *encoded, size_t encoded_len,