Re: [Dovecot] [PATCH] deliver tries to compile already compiled sieve script

2008-04-01 Thread Timo Sirainen
On Tue, 2008-04-01 at 11:50 +0200, Alexander Prinsier wrote:
> Hello,
> 
> I've solved it. The compiled sieve script had the same mtime as the
> uncompiled script. Dovecot used "<" to see if compilation is needed. It
> has to be "<=".
> 
> If you wonder why the mtime is the same, I write and compile the sieve
> script right after each other automated. Apparently mtime doesn't have a
> good resolution in time...
> 
> Patch to dovecot-sieve-1.1.4 is attached, can it be included?

Committed.



signature.asc
Description: This is a digitally signed message part


Re: [Dovecot] [PATCH] deliver tries to compile already compiled sieve script

2008-04-01 Thread Alexander Prinsier
Hello,

I've solved it. The compiled sieve script had the same mtime as the
uncompiled script. Dovecot used "<" to see if compilation is needed. It
has to be "<=".

If you wonder why the mtime is the same, I write and compile the sieve
script right after each other automated. Apparently mtime doesn't have a
good resolution in time...

Patch to dovecot-sieve-1.1.4 is attached, can it be included?

Thanks,

Alexander

Alexander Prinsier wrote:
> I should have mentioned I'm running dovecot 1.1.rc3
> 
> Alexander
> 
> Alexander Prinsier wrote:
>> Hello,
>>
>> I'm trying to setup dovecot with sieve support in a way where all sieve
>> scripts are precompiled. All sieve scripts are in /var/cache/sieve/.
>>
>> I believe I discovered a bug here. I describe below how to reproduce it.
>>
>> Dovecot and the user that deliver runs as do not have write permission
>> in /var/cache/sieve/.
>>
>> h01:/var/cache/sieve# ls -la
>> total 16
>> drwxr-xr-x  2 ecp  ecp  4096 Mar 31 21:32 .
>> drwxr-xr-x 10 root root 4096 Mar 31 20:14 ..
>> -rw-r--r--  1 ecp  ecp88 Mar 31 21:32 [EMAIL PROTECTED]
>> -rw-r--r--  1 ecp  ecp   132 Mar 31 21:32 [EMAIL PROTECTED]
>>
>> When deliver runs it logs this error:
>>
>> open(/var/cache/sieve/[EMAIL PROTECTED]) failed:
>> Permission denied
>>
>> This indicates deliver tries to compile the script, even though the
>> compiled version already is there.
>>
>> To verify I tested another case. I make the compiled script immutable
>> and I did a chmod 777 on /var/cache/sieve/. Then deliver logs this error:
>>
>> rename(/var/cache/sieve/[EMAIL PROTECTED],
>> /var/cache/sieve/[EMAIL PROTECTED]) failed: Operation not
>> permitted
>>
>> And deliver created the file [EMAIL PROTECTED]
>>
>> Some relevant pieces of my dovecot.conf:
>>
>> protocol lda {
>>  mail_plugins = quota cmusieve
>>  ...
>> }
>>
>> plugin {
>>  sieve = /var/cache/sieve/%u.sieve
>> }
>>
>> Anyone can help me? Is this an error on my end, or really a bug?
>>
>> Alexander
>>
> 
> 

--- dovecot-sieve-1.1.4.orig/src/sieve-cmu.c2008-02-16 19:24:51.0 
+0100
+++ dovecot-sieve-1.1.4/src/sieve-cmu.c 2008-04-01 11:30:24.0 +0200
@@ -869,7 +869,7 @@ dovecot_sieve_compile(script_data_t *sda
return -1;
}
} else {
-   if (st.st_mtime < st2.st_mtime)
+   if (st.st_mtime <= st2.st_mtime)
return 1;
}