sieve problems (continued)

Bob Tito lists at magicfingers.org
Sun May 30 05:00:22 EDT 2004


Christian Schulte wrote:

> Bob Tito wrote:
> 

> 
> Does the attached patch fix the problem ? At least it was reproduceable 
> now and the patch fixed it here.

Hi Christian,

For starters it is good the hear that you are able to reproduce the 
problem... to finish it.. *IT WORKS* Thanks a lot!!

But... bacause of the limited  amount of people with this problem is 
very specific to my config ?

Best regards, Bob
> 
> -- 
> Christian
> 
> 
> ------------------------------------------------------------------------
> 
> --- cyrus-imapd-2.2.5.old/imap/lmtpd.c	2004-05-22 05:45:51.000000000 +0200
> +++ cyrus-imapd-2.2.5/imap/lmtpd.c	2004-05-29 17:51:43.000000000 +0200
> @@ -410,7 +410,8 @@
>  
>  #ifdef USE_SIEVE
>  	    mydata.cur_rcpt = n;
> -	    r = run_sieve(user, domain, mailbox, sieve_interp, &mydata);
> +	    r = run_sieve(user, domain, mailbox, sieve_interp, &mydata,
> +	                  &lmtpd_namespace);
>  	    /* if there was no sieve script, or an error during execution,
>  	       r is non-zero and we'll do normal delivery */
>  #else
> --- cyrus-imapd-2.2.5.old/imap/lmtp_sieve.c	2004-05-22 05:45:51.000000000 +0200
> +++ cyrus-imapd-2.2.5/imap/lmtp_sieve.c	2004-05-29 17:54:44.000000000 +0200
> @@ -821,7 +821,8 @@
>  }
>  
>  int run_sieve(const char *user, const char *domain, const char *mailbox,
> -	      sieve_interp_t *interp, sieve_msgdata_t *msgdata)
> +	      sieve_interp_t *interp, sieve_msgdata_t *msgdata,
> +	      struct namespace *lmtpd_namespace)
>  {
>      char fname[MAX_MAILBOX_PATH+1];
>      int r = 0;
> @@ -830,6 +831,7 @@
>  	script_data_t *sdata = NULL;
>  	sieve_bytecode_t *bc = NULL;
>  	char userbuf[MAX_MAILBOX_NAME+1];
> +	char authuserbuf[MAX_MAILBOX_NAME +1];
>  
>  	sdata = (script_data_t *) xmalloc(sizeof(script_data_t));
>  
> @@ -838,9 +840,16 @@
>  	    strlcat(userbuf, "@", sizeof(userbuf));
>  	    strlcat(userbuf, domain, sizeof(userbuf));
>  	}
> +        strlcpy(authuserbuf, userbuf, sizeof(authuserbuf));
> +	if (config_getswitch(IMAPOPT_UNIXHIERARCHYSEP)) {
> +	    mboxname_hiersep_toexternal(lmtpd_namespace, authuserbuf,
> +	                                (domain ?
> +	                                 strcspn(authuserbuf, "@")
> +	                                     : strlen(authuserbuf)));
> +	}
>  	sdata->username = userbuf;
>  	sdata->mailboxname = mailbox;
> -	sdata->authstate = auth_newstate(userbuf);
> +	sdata->authstate = auth_newstate(authuserbuf);
>  
>  	r = sieve_script_load(fname, &bc);
>  	if (r == SIEVE_OK) {
> --- cyrus-imapd-2.2.5.old/imap/lmtp_sieve.h	2004-02-12 03:32:23.000000000 +0100
> +++ cyrus-imapd-2.2.5/imap/lmtp_sieve.h	2004-05-29 17:51:25.000000000 +0200
> @@ -70,6 +70,7 @@
>  
>  sieve_interp_t *setup_sieve(void);
>  int run_sieve(const char *user, const char *domain, const char *mailbox,
> -	      sieve_interp_t *interp, sieve_msgdata_t *mydata);
> +	      sieve_interp_t *interp, sieve_msgdata_t *mydata,
> +	      struct namespace *lmtpd_namespace);
>  
>  #endif /* LMTP_SIEVE_H */

---
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html




More information about the Info-cyrus mailing list