dovecot-2.2-pigeonhole: Merged concurrent changes.

pigeonhole at rename-it.nl pigeonhole at rename-it.nl
Sun Nov 16 22:16:50 UTC 2014


details:   http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/0677417707c0
changeset: 1967:0677417707c0
user:      Stephan Bosch <stephan at rename-it.nl>
date:      Sun Nov 16 23:16:38 2014 +0100
description:
Merged concurrent changes.

diffstat:

 README                        |  22 ++++++++++++++-----
 src/lib-sieve/sieve-actions.c |  47 +++++++++++++++++++++---------------------
 src/lib-sieve/sieve-actions.h |   7 ++---
 src/lib-sieve/sieve-binary.h  |   2 +-
 src/lib-sieve/sieve-message.c |  12 +++++-----
 src/lib-sieve/sieve-message.h |   7 ++---
 6 files changed, 53 insertions(+), 44 deletions(-)

diffs (218 lines):

diff -r 4da1e84f32e4 -r 0677417707c0 README
--- a/README	Sun Nov 16 23:13:58 2014 +0100
+++ b/README	Sun Nov 16 23:16:38 2014 +0100
@@ -110,6 +110,7 @@
     subaddress (RFC 5233): fully supported, but with limited configurability.
     spamtest and virustest (RFC 5235): fully supported (v0.1.16+).
     date (RFC 5260; Section 4): fully supported (v0.1.12+).
+    index (RFC 5260; Section 6): fully supported (v0.4.7+).
     editheader (RFC 5293): fully supported (v0.3.0+).
     reject (RFC 5429; Section 2.2): fully supported.
     enotify (RFC 5435): fully supported (v0.1.3+).
@@ -120,7 +121,7 @@
     mailbox (RFC 5490; Section 3): fully supported (v0.1.10+), but ACL
         permissions are not verified for mailboxexists.
     include (RFC 6609): fully supported (v0.4.0+)
-    duplicate (draft v03): fully supported (v0.4.3+).
+    duplicate (RFC 7352): fully supported (v0.4.3+).
     regex (draft v08; not latest version): almost fully supported, but
         UTF-8 is not supported.
 
@@ -135,30 +136,39 @@
   The following Dovecot-specific Sieve extensions are available:
 
     vnd.dovecot.debug (v0.3.0+):
-        Allows logging debug messages
+        Allows logging debug messages.
     vnd.dovecot.pipe (v0.4.0+; sieve_extprograms plugin):
-        Implements piping messages to a pre-defined set of external programs
+        Implements piping messages to a pre-defined set of external programs.
     vnd.dovecot.filter (v0.4.0+; sieve_extprograms plugin):
         Implements filtering messages through a pre-defined set of external
-        programs
+        programs.
     vnd.dovecot.execute (v0.4.0+; sieve_extprograms plugin):
         Implements executing a pre-defined set of external programs with the
-        option to process string data through the external program 
+        option to process string data through the external program.
 
   The following extensions are under development:
 
+    mboxmetadata and servermetadata (RFC 5490): partially implemented;
+        Dovecot adjustments needed.
     ereject (RFC 5429; page 4): implemented, but currently equal to reject
 
   Many more extensions to the language exist. Not all of these extensions are
   useful for Dovecot in particular, but many of them are. Currently, the
   author has taken notice of the following extensions:
 
-    index (RFC 5260; page 7): planned.
     foreverypart, mime, replace, enclose, and extracttext (RFC 5703): planned.
+    imapsieve (RFC 6785): planned.
+    envelope-dsn, envelope-deliverby, redirect-dsn and
+      redirect-deliverby (RFC 6009): planned; depends on lib-smtp changes in
+        Dovecot.
+    extlists (RFC 6134): under consideration. 
 
     These extensions will be added as soon as the necessary infrastructure is
     available.
 
+Check the TODO file for an up-to-date list of open issues and current
+development. 
+
 Compiling and Configuring
 =========================
 
diff -r 4da1e84f32e4 -r 0677417707c0 src/lib-sieve/sieve-actions.c
--- a/src/lib-sieve/sieve-actions.c	Sun Nov 16 23:13:58 2014 +0100
+++ b/src/lib-sieve/sieve-actions.c	Sun Nov 16 23:16:38 2014 +0100
@@ -37,29 +37,6 @@
 const struct sieve_operand_class sieve_side_effect_operand_class =
 	{ "SIDE-EFFECT" };
 
-bool sieve_opr_side_effect_read
-(const struct sieve_runtime_env *renv, sieve_size_t *address,
-	struct sieve_side_effect *seffect)
-{
-	const struct sieve_side_effect_def *sdef;
-
-	seffect->context = NULL;
-
-	if ( !sieve_opr_object_read
-		(renv, &sieve_side_effect_operand_class, address, &seffect->object) )
-		return FALSE;
-
-	sdef = seffect->def =
-		(const struct sieve_side_effect_def *) seffect->object.def;
-
-	if ( sdef->read_context != NULL &&
-		!sdef->read_context(seffect, renv, address, &seffect->context) ) {
-		return FALSE;
-	}
-
-	return TRUE;
-}
-
 bool sieve_opr_side_effect_dump
 (const struct sieve_dumptime_env *denv, sieve_size_t *address)
 {
@@ -84,6 +61,30 @@
 	return TRUE;
 }
 
+int sieve_opr_side_effect_read
+(const struct sieve_runtime_env *renv, sieve_size_t *address,
+	struct sieve_side_effect *seffect)
+{
+	const struct sieve_side_effect_def *sdef;
+	int ret;
+
+	seffect->context = NULL;
+
+	if ( !sieve_opr_object_read
+		(renv, &sieve_side_effect_operand_class, address, &seffect->object) )
+		return SIEVE_EXEC_BIN_CORRUPT;
+
+	sdef = seffect->def =
+		(const struct sieve_side_effect_def *) seffect->object.def;
+
+	if ( sdef->read_context != NULL && (ret=sdef->read_context
+		(seffect, renv, address, &seffect->context)) <= 0 ) {
+		return ret;
+	}
+
+	return SIEVE_EXEC_OK;
+}
+
 /*
  * Optional operands
  */
diff -r 4da1e84f32e4 -r 0677417707c0 src/lib-sieve/sieve-actions.h
--- a/src/lib-sieve/sieve-actions.h	Sun Nov 16 23:13:58 2014 +0100
+++ b/src/lib-sieve/sieve-actions.h	Sun Nov 16 23:16:38 2014 +0100
@@ -187,13 +187,12 @@
 	sieve_opr_object_emit(sblock, ext, &seff->obj_def);
 }
 
-bool sieve_opr_side_effect_read
+bool sieve_opr_side_effect_dump
+	(const struct sieve_dumptime_env *denv, sieve_size_t *address);
+int sieve_opr_side_effect_read
 	(const struct sieve_runtime_env *renv, sieve_size_t *address,
 		struct sieve_side_effect *seffect);
 
-bool sieve_opr_side_effect_dump
-	(const struct sieve_dumptime_env *denv, sieve_size_t *address);
-
 /*
  * Optional operands
  */
diff -r 4da1e84f32e4 -r 0677417707c0 src/lib-sieve/sieve-binary.h
--- a/src/lib-sieve/sieve-binary.h	Sun Nov 16 23:13:58 2014 +0100
+++ b/src/lib-sieve/sieve-binary.h	Sun Nov 16 23:16:38 2014 +0100
@@ -13,7 +13,7 @@
  */
 
 #define SIEVE_BINARY_VERSION_MAJOR     1
-#define SIEVE_BINARY_VERSION_MINOR     2
+#define SIEVE_BINARY_VERSION_MINOR     3
 
 /*
  * Binary object
diff -r 4da1e84f32e4 -r 0677417707c0 src/lib-sieve/sieve-message.c
--- a/src/lib-sieve/sieve-message.c	Sun Nov 16 23:13:58 2014 +0100
+++ b/src/lib-sieve/sieve-message.c	Sun Nov 16 23:16:38 2014 +0100
@@ -604,27 +604,27 @@
 	return TRUE;
 }
 
-bool sieve_opr_message_override_read
+int sieve_opr_message_override_read
 (const struct sieve_runtime_env *renv, sieve_size_t *address,
 	struct sieve_message_override *svmo)
 {
 	const struct sieve_message_override_def *hodef;
+	int ret;
 
 	svmo->context = NULL;
 
 	if ( !sieve_opr_object_read
 		(renv, &sieve_message_override_operand_class, address, &svmo->object) )
-		return FALSE;
+		return SIEVE_EXEC_BIN_CORRUPT;
 
 	hodef = svmo->def =
 		(const struct sieve_message_override_def *) svmo->object.def;
 
 	if ( hodef->read_context != NULL &&
-		!hodef->read_context(svmo, renv, address, &svmo->context) ) {
-		return FALSE;
-	}
+		(ret=hodef->read_context(svmo, renv, address, &svmo->context)) <= 0 )
+		return ret;
 
-	return TRUE;
+	return SIEVE_EXEC_OK;
 }
 
 /*
diff -r 4da1e84f32e4 -r 0677417707c0 src/lib-sieve/sieve-message.h
--- a/src/lib-sieve/sieve-message.h	Sun Nov 16 23:13:58 2014 +0100
+++ b/src/lib-sieve/sieve-message.h	Sun Nov 16 23:16:38 2014 +0100
@@ -135,13 +135,12 @@
 	sieve_opr_object_emit(sblock, ext, &seff->obj_def);
 }
 
-bool sieve_opr_message_override_read
+bool sieve_opr_message_override_dump
+	(const struct sieve_dumptime_env *denv, sieve_size_t *address);
+int sieve_opr_message_override_read
 	(const struct sieve_runtime_env *renv, sieve_size_t *address,
 		struct sieve_message_override *svmo);
 
-bool sieve_opr_message_override_dump
-	(const struct sieve_dumptime_env *denv, sieve_size_t *address);
-
 /*
  * Optional operands
  */


More information about the dovecot-cvs mailing list