Index: head/mail/dovecot2-pigeonhole/Makefile =================================================================== --- head/mail/dovecot2-pigeonhole/Makefile (revision 431487) +++ head/mail/dovecot2-pigeonhole/Makefile (revision 431488) @@ -1,66 +1,66 @@ # Created by: Nils Vogels # $FreeBSD$ PORTNAME= dovecot-pigeonhole PORTVERSION= 0.4.16 -PORTREVISION= 4 +PORTREVISION= 5 CATEGORIES= mail MASTER_SITES= http://pigeonhole.dovecot.org/releases/${DOVECOTVERSION}/ DISTNAME= ${PORTNAME:C/-/-${DOVECOTVERSION}-/}-${PORTVERSION} MAINTAINER= ler@FreeBSD.org COMMENT= Sieve plugin for the Dovecot 'deliver' LDA and LMTP LICENSE= LGPL21 BUILD_DEPENDS= dovecot2>=2.2.26.0:mail/dovecot2 RUN_DEPENDS= dovecot2>=2.2.26.0:mail/dovecot2 DOVECOTVERSION= 2.2 GNU_CONFIGURE= yes CONFIGURE_ARGS= --exec-prefix=${PREFIX} \ --without-dovecot-install-dirs \ --docdir=${DOCSDIR} \ --with-dovecot="${LOCALBASE}/lib/dovecot" LDFLAGS+= -L${LOCALBASE}/lib INSTALL_TARGET= install-strip USES= compiler:c11 libtool ssl USE_LDCONFIG= ${PREFIX}/lib/dovecot OPTIONS_DEFINE= DOCS LDAP MANAGESIEVE OPTIONS_DEFAULT=MANAGESIEVE GSSAPI_NONE OPTIONS_SINGLE= GSSAPI OPTIONS_SINGLE_GSSAPI= GSSAPI_NONE GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT OPTIONS_SUB= yes GSSAPI_DESC= GSSAPI Support (*MUST MATCH* mail/dovecot2) GSSAPI_NONE_DESC= Build without GSSAPI support GSSAPI_BASE_DESC= Use GSSAPI from base GSSAPI_HEIMDAL_DESC= Use Heimdal GSSAPI from security/heimdal GSSAPI_MIT_DESC= Use MIT GSSAPI from security/krb5 GSSAPI_BASE_USES= gssapi GSSAPI_HEIMDAL_USES= gssapi:heimdal GSSAPI_MIT_USES= gssapi:mit GSSAPI_NONE_CONFIGURE_OFF= ${GSSAPI_CONFIGURE_ARGS} BUILD_FAIL_MESSAGE= Ensure that ${PORTNAME}'s GSSAPI backend is the same as dovecot2 (make config). MANAGESIEVE_DESC= ManageSieve support MANAGESIEVE_CONFIGURE_WITH= managesieve LDAP_CONFIGURE_WITH= ldap LDAP_CPPFLAGS= -I${LOCALBASE}/include LDAP_LDFLAGS= -L${LOCALBASE}/lib LDAP_USE= OPENLDAP=yes PORTDOCS= sieve/extensions/* sieve/plugins/* sieve/locations/* post-patch: @${REINPLACE_CMD} -E '\ s!^(install-data-am:) install-sieve_docDATA!\1!; \ s!^(uninstall-am:) uninstall-sieve_docDATA!\1!;' \ ${WRKSRC}/doc/Makefile.in .include Index: head/mail/dovecot2-pigeonhole/files/patch-src_lib-sieve_sieve-result.c =================================================================== --- head/mail/dovecot2-pigeonhole/files/patch-src_lib-sieve_sieve-result.c (nonexistent) +++ head/mail/dovecot2-pigeonhole/files/patch-src_lib-sieve_sieve-result.c (revision 431488) @@ -0,0 +1,87 @@ +--- src/lib-sieve/sieve-result.c.orig 2016-10-20 22:48:08 UTC ++++ src/lib-sieve/sieve-result.c +@@ -928,7 +928,7 @@ static int _sieve_result_implicit_keep + (struct sieve_result *result, bool rollback) + { + const struct sieve_action_exec_env *aenv = &result->action_env; +- struct sieve_result_action *rac; ++ struct sieve_result_action *rac, *kac; + int status = SIEVE_EXEC_OK; + struct sieve_result_side_effect *rsef, *rsef_first = NULL; + void *tr_context = NULL; +@@ -937,38 +937,54 @@ static int _sieve_result_implicit_keep + if ( (aenv->flags & SIEVE_EXECUTE_FLAG_DEFER_KEEP) != 0 ) + return SIEVE_EXEC_OK; + +- if ( rollback ) { ++ if ( rollback ) + act_keep = result->failure_action; +- act_keep.mail = NULL; +- } else { ++ else + act_keep = result->keep_action; +- act_keep.mail = sieve_message_get_mail(aenv->msgctx); +- } ++ act_keep.mail = NULL; + + /* If keep is a non-action, return right away */ + if ( act_keep.def == NULL ) + return SIEVE_EXEC_OK; + +- /* Scan for execution of keep-equal actions */ +- rac = result->first_action; +- while ( rac != NULL ) { +- if ( rac->action.def == act_keep.def && act_keep.def->equals != NULL && +- act_keep.def->equals(aenv->scriptenv, NULL, &rac->action) && +- rac->action.executed ) +- return SIEVE_EXEC_OK; +- +- rac = rac->next; ++ /* Scan for deferred keep */ ++ kac = result->last_action; ++ while ( kac != NULL && kac->action.executed ) { ++ if ( kac->keep && kac->action.def == NULL ) ++ break; ++ kac = kac->prev; + } + +- /* Apply any implicit side effects if applicable */ +- if ( !rollback && hash_table_is_created(result->action_contexts) ) { +- struct sieve_result_action_context *actctx; ++ if (kac == NULL) { ++ if ( !rollback ) ++ act_keep.mail = sieve_message_get_mail(aenv->msgctx); + +- /* Check for implicit side effects to keep action */ +- actctx = hash_table_lookup(result->action_contexts, act_keep.def); ++ /* Scan for execution of keep-equal actions */ ++ rac = result->first_action; ++ while ( rac != NULL ) { ++ if ( rac->action.def == act_keep.def && act_keep.def->equals != NULL && ++ act_keep.def->equals(aenv->scriptenv, NULL, &rac->action) && ++ rac->action.executed ) ++ return SIEVE_EXEC_OK; + +- if ( actctx != NULL && actctx->seffects != NULL ) +- rsef_first = actctx->seffects->first_effect; ++ rac = rac->next; ++ } ++ ++ /* Apply any implicit side effects if applicable */ ++ if ( !rollback && hash_table_is_created(result->action_contexts) ) { ++ struct sieve_result_action_context *actctx; ++ ++ /* Check for implicit side effects to keep action */ ++ actctx = hash_table_lookup(result->action_contexts, act_keep.def); ++ ++ if ( actctx != NULL && actctx->seffects != NULL ) ++ rsef_first = actctx->seffects->first_effect; ++ } ++ } else if ( !rollback ) { ++ act_keep.location = kac->action.location; ++ act_keep.mail = kac->action.mail; ++ if ( kac->seffects != NULL ) ++ rsef_first = kac->seffects->first_effect; + } + + /* Start keep action */ Property changes on: head/mail/dovecot2-pigeonhole/files/patch-src_lib-sieve_sieve-result.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property