[Dovecot] Deliver die if global sieve script turn on

Timo Sirainen tss at iki.fi
Mon Apr 16 15:34:53 EEST 2007

On Mon, 2007-04-16 at 12:17 +0800, M1 wrote:
> Apr 16 12:11:17 mx postfix/pipe[2588]: C8D9B121BC7: to=<steve at xyz.com>, 
> relay=dovecot, delay=0.12, delays=0.06/0.01/0/0.05, dsn=5.3.0, 
> status=bounced (Command died with status 2: "/usr/libexec/dovecot/deliver". 
> Command output: input in flex scanner failed )

I'm not sure if I should hate libsieve, flex or both, but this error
message is horrible. I had no idea what it meant before looking at the
sources. The code that produces it is in src/libsieve/sieve-lex.c:

		while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
			{ \
			if( errno != EINTR) \
				{ \
				YY_FATAL_ERROR( "input in flex scanner failed" ); \
				break; \
				} \

So fread() fails, but it doesn't bother telling why. You could change
the YY_FATAL_ERROR() to something like:

fprintf(stderr, "input in flex scanner failed: %s", strerror(errno));

That could give additional information. Although I've no idea why fread() would fail here.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://dovecot.org/pipermail/dovecot/attachments/20070416/922d7a11/attachment.pgp 

More information about the dovecot mailing list