input = i_stream_create_limit(tstream->dupstream, size);
do {
- ret = io_stream_copy(&tstream->ostream.ostream,
- input, IO_BLOCK_SIZE);
+ ret = io_stream_copy(&tstream->ostream.ostream, input);
} while (input->v_offset < tstream->dupstream_offset && ret > 0);
if (ret < 0 && tstream->ostream.ostream.stream_errno == 0) {
i_assert(input->stream_errno != 0);
return -1;
outstream->flags &= ~IOSTREAM_TEMP_FLAG_TRY_FD_DUP;
}
- return io_stream_copy(&outstream->ostream.ostream,
- instream, IO_BLOCK_SIZE);
+ return io_stream_copy(&outstream->ostream.ostream, instream);
}
static int
}
}
- return io_stream_copy(&outstream->ostream, instream,
- foutstream->optimal_block_size);
+ return io_stream_copy(&outstream->ostream, instream);
}
static off_t o_stream_file_send_istream(struct ostream_private *outstream,
o_stream_create(struct ostream_private *_stream, struct ostream *parent, int fd)
ATTR_NULL(2);
-off_t io_stream_copy(struct ostream *outstream, struct istream *instream,
- size_t block_size);
+off_t io_stream_copy(struct ostream *outstream, struct istream *instream);
void o_stream_copy_error_from_parent(struct ostream_private *_stream);
/* This should be called before sending data to parent stream. It makes sure
return ret;
}
-off_t io_stream_copy(struct ostream *outstream, struct istream *instream,
- size_t block_size)
+off_t io_stream_copy(struct ostream *outstream, struct istream *instream)
{
uoff_t start_offset;
struct const_iovec iov;
ssize_t ret;
start_offset = instream->v_offset;
- for (;;) {
- (void)i_stream_read_data(instream, &data, &iov.iov_len,
- block_size-1);
+ do {
+ (void)i_stream_read_data(instream, &data, &iov.iov_len, 0);
if (iov.iov_len == 0) {
/* all sent */
break;
return -1;
}
i_stream_skip(instream, ret);
-
- if ((size_t)ret != iov.iov_len)
- break;
- }
+ } while ((size_t)ret == iov.iov_len);
return (off_t)(instream->v_offset - start_offset);
}
static off_t o_stream_default_send_istream(struct ostream_private *outstream,
struct istream *instream)
{
- return io_stream_copy(&outstream->ostream, instream, IO_BLOCK_SIZE);
+ return io_stream_copy(&outstream->ostream, instream);
}
static void o_stream_default_switch_ioloop(struct ostream_private *_stream)