diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2013-06-06 17:31:31 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2013-06-06 17:31:31 +0100 |
commit | 55e35bf938fcdf95f59950bae2674f1606e306c3 (patch) | |
tree | adc7084a50b4916314fb64ab79cafd7551b2cecb /src/buffer.c | |
parent | b96a568fa2fd9ddb1643d6ab3bb1cd1ddea5f166 (diff) | |
download | rspamd-55e35bf938fcdf95f59950bae2674f1606e306c3.tar.gz rspamd-55e35bf938fcdf95f59950bae2674f1606e306c3.zip |
Update buffers logic for streaming read.
Diffstat (limited to 'src/buffer.c')
-rw-r--r-- | src/buffer.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/buffer.c b/src/buffer.c index c81c6a686..5912f7040 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -523,9 +523,16 @@ read_buffers (gint fd, rspamd_io_dispatcher_t * d, gboolean skip_read) case BUFFER_ANY: res.begin = d->in_buf->data->begin; res.len = len; + if (d->read_callback) { - if (!d->read_callback (&res, d->user_data)) { - return; + /* + * Actually we do not want to send zero sized + * buffers to a read callback + */ + if (! (d->want_read && res.len == 0)) { + if (!d->read_callback (&res, d->user_data)) { + return; + } } if (d->policy != saved_policy) { debug_ip("policy changed during callback, restart buffer's processing"); |