istream-chain.c revision 2c42748505ef4aed83ff59b34e50ed5606900c86
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen/* Copyright (c) 2003-2013 Dovecot authors, see the included COPYING file */
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Siraineni_stream_chain_append_internal(struct istream_chain *chain,
1108376e39a19912e8394e64e19b1bc6f6691cf6Timo Sirainen if (stream == NULL && chain->tail != NULL && chain->tail->stream == NULL)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen if (chain->stream->istream.max_buffer_size == 0) {
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen DLLIST2_APPEND(&chain->head, &chain->tail, link);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenvoid i_stream_chain_append(struct istream_chain *chain, struct istream *stream)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen i_stream_chain_append_internal(chain, stream);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenvoid i_stream_chain_append_eof(struct istream_chain *chain)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Siraineni_stream_chain_set_max_buffer_size(struct iostream_private *stream,
b7828b34f6d81cdea62761932a1da1a444a29bcdTimo Sirainen struct chain_istream *cstream = (struct chain_istream *)stream;
2e1e493b248dec0127b1eabeea5a8bc330378fcdTimo Sirainen struct istream_chain_link *link = cstream->chain.head;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen i_stream_set_max_buffer_size(link->stream, max_size);
59151b71059df1190acd75d8717ed04a7920c862Timo Sirainenstatic void i_stream_chain_destroy(struct iostream_private *stream)
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen struct chain_istream *cstream = (struct chain_istream *)stream;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen struct istream_chain_link *link = cstream->chain.head;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainenstatic void i_stream_chain_read_next(struct chain_istream *cstream)
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen struct istream_chain_link *link = cstream->chain.head;
d5cebe7f98e63d4e2822863ef2faa4971e8b3a5dTimo Sirainen const unsigned char *data;
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen i_assert(link != NULL && link->stream != NULL);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen data = i_stream_get_data(prev_input, &data_size);
6c2c5f20760b06bfb4a40b0ee2ef5ab016bc41f0Timo Sirainen DLLIST2_REMOVE(&cstream->chain.head, &cstream->chain.tail, link);
if (data_size > 0) {
i_unreached();
const unsigned char *data;
bytes_skipped = 0;
ret = 0;
return ret;
return ret;