filter_chain: Don't return eof too early
authorAndre <maan@p133.(none)>
Sun, 4 Jun 2006 19:52:00 +0000 (21:52 +0200)
committerAndre <maan@p133.(none)>
Sun, 4 Jun 2006 19:52:00 +0000 (21:52 +0200)
The current code may miss to transform the remaining buffer if the
receiver has already deactivated its task. Check for the number of
loaded bytes in the input buffer of the filter chain and return eof
only if nothing is loaded.

filter_chain.c

index 4114ca7..2d82a22 100644 (file)
@@ -124,7 +124,7 @@ void filter_pre_select(__a_unused struct sched *s, struct task *t)
        t->ret = -E_FC_EOF;
        if (fc->output_eof && *fc->output_eof)
                goto err_out;
-       if (fc->input_eof && *fc->input_eof)
+       if (fc->input_eof && *fc->input_eof && !*fc->in_loaded)
                goto err_out;
 again:
        ib = fc->inbuf;