+ return NULL;
+}
+/* }}} */
+
+/* {{{ STATUS http_encoding_deflate_stream_update(http_encoding_stream *, char *, size_t, char **, size_t *) */
+PHP_HTTP_API STATUS _http_encoding_deflate_stream_update(http_encoding_stream *s, const char *data, size_t data_len, char **encoded, size_t *encoded_len ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC TSRMLS_DC)
+{
+ int status;
+
+ /* append input to our buffer */
+ phpstr_append(PHPSTR(s->stream.opaque), data, data_len);
+
+ s->stream.next_in = (Bytef *) PHPSTR_VAL(s->stream.opaque);
+ s->stream.avail_in = PHPSTR_LEN(s->stream.opaque);
+
+ /* deflate */
+ *encoded_len = HTTP_DEFLATE_BUFFER_SIZE_GUESS(data_len);
+ *encoded = emalloc_rel(*encoded_len);
+ s->stream.avail_out = *encoded_len;
+ s->stream.next_out = (Bytef *) *encoded;
+
+ switch (status = deflate(&s->stream, HTTP_ENCODING_STREAM_FLUSH_FLAG(s->flags)))
+ {
+ case Z_OK:
+ case Z_STREAM_END:
+ /* cut processed chunk off the buffer */
+ if (s->stream.avail_in) {
+ phpstr_cut(PHPSTR(s->stream.opaque), 0, PHPSTR_LEN(s->stream.opaque) - s->stream.avail_in);
+ } else {
+ phpstr_reset(PHPSTR(s->stream.opaque));
+ }
+
+ /* size buffer down to actual size */
+ *encoded_len -= s->stream.avail_out;
+ *encoded = erealloc_rel(*encoded, *encoded_len + 1);
+ (*encoded)[*encoded_len] = '\0';
+ return SUCCESS;
+ break;