Earlier behavior was to delay until i_stream_read() was called, which caused
problems with some error handling.
}
input = fs_read_stream(file->super_read, max_buffer_size);
+ if (input->stream_errno != 0) {
+ file->input = input;
+ i_stream_ref(file->input);
+ return file->input;
+ }
file->input = i_stream_create_metawrap(input, fs_metawrap_callback, file);
i_stream_unref(&input);
i_stream_ref(file->input);
input = fs_read_stream(file->super_read,
I_MAX(FS_COMPRESS_ISTREAM_MIN_BUFFER_SIZE, max_buffer_size));
+ if (input->stream_errno != 0) {
+ file->input = input;
+ i_stream_ref(file->input);
+ return file->input;
+ }
if (file->fs->try_plain)
flags |= ISTREAM_DECOMPRESS_FLAG_TRY;
file->input = i_stream_create_decompress(input, flags);
input = fs_read_stream(file->super_read,
I_MAX(FS_CRYPT_ISTREAM_MIN_BUFFER_SIZE, max_buffer_size));
+ if (input->stream_errno != 0) {
+ file->input = input;
+ i_stream_ref(file->input);
+ return file->input;
+ }
if (file->fs->allow_missing_keys) {
struct istream *decrypted_input =