struct ostream_private *_stream = stream->real_stream;
int ret = 1;
- if (unlikely(stream->closed))
+ if (unlikely(stream->closed)) {
+ errno = stream->stream_errno;
return -1;
+ }
stream->stream_errno = 0;
if (unlikely((ret = _stream->flush(_stream)) < 0)) {
i_assert(stream->stream_errno != 0);
stream->last_failed_errno = stream->stream_errno;
+ errno = stream->stream_errno;
}
return ret;
}
{
struct ostream_private *_stream = stream->real_stream;
- if (unlikely(stream->closed))
+ if (unlikely(stream->closed)) {
+ errno = stream->stream_errno;
return -1;
+ }
stream->stream_errno = 0;
if (unlikely(_stream->seek(_stream, offset) < 0)) {
i_assert(stream->stream_errno != 0);
stream->last_failed_errno = stream->stream_errno;
+ errno = stream->stream_errno;
return -1;
}
return 1;
size_t total_size;
ssize_t ret;
- if (unlikely(stream->closed))
+ if (unlikely(stream->closed)) {
+ errno = stream->stream_errno;
return -1;
+ }
stream->stream_errno = 0;
for (i = 0, total_size = 0; i < iov_count; i++)
if (ret < 0) {
i_assert(stream->stream_errno != 0);
stream->last_failed_errno = stream->stream_errno;
+ errno = stream->stream_errno;
} else {
stream->overflow = TRUE;
}
struct ostream_private *_outstream = outstream->real_stream;
off_t ret;
- if (unlikely(outstream->closed || instream->closed))
+ if (unlikely(outstream->closed || instream->closed)) {
+ errno = outstream->stream_errno;
return -1;
+ }
outstream->stream_errno = 0;
ret = _outstream->send_istream(_outstream, instream);
- if (unlikely(ret < 0))
+ if (unlikely(ret < 0)) {
+ i_assert(outstream->stream_errno != 0);
+ outstream->last_failed_errno = outstream->stream_errno;
errno = outstream->stream_errno;
+ }
return ret;
}
{
int ret;
- if (unlikely(stream->closed))
+ if (unlikely(stream->closed)) {
+ errno = stream->stream_errno;
return -1;
+ }
ret = stream->real_stream->write_at(stream->real_stream,
data, size, offset);
if (unlikely(ret < 0)) {
i_assert(stream->stream_errno != 0);
stream->last_failed_errno = stream->stream_errno;
+ errno = stream->stream_errno;
}
return ret;
}