summaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2013-06-06 17:31:31 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2013-06-06 17:31:31 +0100
commit55e35bf938fcdf95f59950bae2674f1606e306c3 (patch)
treeadc7084a50b4916314fb64ab79cafd7551b2cecb /src/buffer.c
parentb96a568fa2fd9ddb1643d6ab3bb1cd1ddea5f166 (diff)
downloadrspamd-55e35bf938fcdf95f59950bae2674f1606e306c3.tar.gz
rspamd-55e35bf938fcdf95f59950bae2674f1606e306c3.zip
Update buffers logic for streaming read.
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c11
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");