Mercurial > dovecot > core-2.2
view src/lib/istream-data.c @ 22656:1789bf2a1e01
director: Make sure HOST-RESET-USERS isn't used with max_moving_users=0
The reset command would just hang in that case. doveadm would never have
sent this, so this is just an extra sanity check.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sun, 05 Nov 2017 23:51:56 +0200 |
parents | 2e2563132d5f |
children | cb108f786fb4 |
line wrap: on
line source
/* Copyright (c) 2002-2017 Dovecot authors, see the included COPYING file */ #include "lib.h" #include "istream-private.h" static ssize_t i_stream_data_read(struct istream_private *stream) { stream->istream.eof = TRUE; return -1; } static void i_stream_data_seek(struct istream_private *stream, uoff_t v_offset, bool mark ATTR_UNUSED) { stream->skip = v_offset; stream->istream.v_offset = v_offset; } struct istream *i_stream_create_from_data(const void *data, size_t size) { struct istream_private *stream; stream = i_new(struct istream_private, 1); stream->buffer = data; stream->pos = size; stream->max_buffer_size = (size_t)-1; stream->read = i_stream_data_read; stream->seek = i_stream_data_seek; stream->istream.readable_fd = FALSE; stream->istream.blocking = TRUE; stream->istream.seekable = TRUE; i_stream_create(stream, NULL, -1); stream->statbuf.st_size = size; i_stream_set_name(&stream->istream, "(buffer)"); return &stream->istream; } static void i_stream_copied_data_free(void *data) { i_free(data); } struct istream * i_stream_create_copy_from_data(const void *data, size_t size) { struct istream *stream; void *buffer; if (size == 0) { buffer = ""; } else { buffer = i_malloc(size); memcpy(buffer, data, size); } stream = i_stream_create_from_data(buffer, size); if (size > 0) { i_stream_add_destroy_callback (stream, i_stream_copied_data_free, buffer); } return stream; }