+ {
+ char *s = (char *) data + begin;
+
+ while ((len -= HTTP_SENDBUF_SIZE) >= 0) {
+ if (HTTP_SENDBUF_SIZE - php_body_write(s, HTTP_SENDBUF_SIZE TSRMLS_CC)) {
+ return FAILURE;
+ }
+ s += HTTP_SENDBUF_SIZE;
+ /* ob_flush() & flush() */
+ php_end_ob_buffer(1, 1 TSRMLS_CC);
+ sapi_flush(TSRMLS_C);
+ }
+
+ /* write left over */
+ if (len) {
+ if (HTTP_SENDBUF_SIZE + len - php_body_write(s, HTTP_SENDBUF_SIZE + len TSRMLS_CC)) {
+ return FAILURE;
+ }
+ /* ob_flush() & flush() */
+ php_end_ob_buffer(1, 1 TSRMLS_CC);
+ sapi_flush(TSRMLS_C);
+ }
+ return SUCCESS;
+ }