[exim-dev] Pipe transport and 64kB limit due to wrong (?) SI…

Top Page
Delete this message
Reply to this message
Author: Christoph Schulz
Date:  
To: exim-dev
Subject: [exim-dev] Pipe transport and 64kB limit due to wrong (?) SIGPIPE handling
Hello,

since exim 4.75, my pipe transport is not able to transfer more than
64kB of data. It is configured as follows:

e2s_transport:
driver = pipe
ignore_status = true
path = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin
command = /usr/bin/email2system $address_data
max_output = 50M
user = mail
group = mail
initgroups = true
home_directory = /var/spool/mail

In the shell script /usr/bin/email2system, I use "tee" to read the
data from standard input and to save it into a file ("tee" because I
also send it to a shell function for further processing). From exim
4.75 on, this file receives at most 65536 bytes.

I tracked down the problem to the following line in src/child.c,
introduced in exim 4.75 (line 343, line 341 in exim 4.80):

signal(SIGPIPE, SIG_DFL);

If I remove this line in current exim 4.80, everything works as
expected. So I think that enabling default handling for SIGPIPE is
wrong as it leads to data loss.

What do you think?


Regards,

Christoph