summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul J Stevens <paul@nfg.nl>2010-05-02 15:30:08 +0200
committerPaul J Stevens <paul@nfg.nl>2010-05-02 15:30:08 +0200
commit4d82947c8fab388885925e1e7d11c3b316e6e65a (patch)
tree0866242af94d6935a3cbe8cefd1f2589f0a80615
parent6dc60b4274dc2823567217f2904e88608a5486c3 (diff)
propagate sub-address into sieve handler
-rw-r--r--src/dbmail-message.c2
-rw-r--r--src/modules/sortnull.c2
-rw-r--r--src/modules/sortsieve.c4
-rw-r--r--src/sort.h2
-rw-r--r--src/sortmodule.c4
5 files changed, 8 insertions, 6 deletions
diff --git a/src/dbmail-message.c b/src/dbmail-message.c
index 51de6f29..d4cecf18 100644
--- a/src/dbmail-message.c
+++ b/src/dbmail-message.c
@@ -1846,7 +1846,7 @@ dsn_class_t sort_and_deliver(DbmailMessage *message,
config_get_value("SIEVE", "DELIVERY", val);
if (strcasecmp(val, "yes") == 0 && dm_sievescript_isactive(useridnr)) {
TRACE(TRACE_INFO, "Calling for a Sieve sort");
- sort_result_t *sort_result = sort_process(useridnr, message);
+ sort_result_t *sort_result = sort_process(useridnr, message, mailbox);
if (sort_result) {
cancelkeep = sort_get_cancelkeep(sort_result);
reject = sort_get_reject(sort_result);
diff --git a/src/modules/sortnull.c b/src/modules/sortnull.c
index b58b420c..5cbf2d20 100644
--- a/src/modules/sortnull.c
+++ b/src/modules/sortnull.c
@@ -40,7 +40,7 @@ sort_result_t *sort_validate(u64_t user_idnr UNUSED, char *scriptname UNUSED)
return NULL;
}
-sort_result_t *sort_process(u64_t user_idnr UNUSED, DbmailMessage *message UNUSED)
+sort_result_t *sort_process(u64_t user_idnr UNUSED, DbmailMessage *message UNUSED, const char *mailbox UNUSED)
{
TRACE(TRACE_WARNING, "SIEVE sorting enabled in DELIVERY section of dbmail.conf,"
" but this build of DBMail was statically configured without Sieve.");
diff --git a/src/modules/sortsieve.c b/src/modules/sortsieve.c
index 84611b0e..fa16411c 100644
--- a/src/modules/sortsieve.c
+++ b/src/modules/sortsieve.c
@@ -872,7 +872,7 @@ freesieve:
* such as dbmail-lmtpd, the daemon should
* finish storing the message and restart.
* */
-sort_result_t *sort_process(u64_t user_idnr, DbmailMessage *message)
+sort_result_t *sort_process(u64_t user_idnr, DbmailMessage *message, const char *mailbox)
{
int res, exitnull = 0;
struct sort_result *result = NULL;
@@ -896,6 +896,8 @@ sort_result_t *sort_process(u64_t user_idnr, DbmailMessage *message)
goto freesieve;
}
sort_context->result->errormsg = g_string_new("");
+ if (mailbox)
+ sort_context->result->mailbox = mailbox;
res = dm_sievescript_get(user_idnr, &sort_context->script);
if (res != 0) {
diff --git a/src/sort.h b/src/sort.h
index 0bcb90e0..9afb0012 100644
--- a/src/sort.h
+++ b/src/sort.h
@@ -27,7 +27,7 @@
typedef struct sort_result sort_result_t;
-sort_result_t *sort_process(u64_t user_idnr, DbmailMessage *message);
+sort_result_t *sort_process(u64_t user_idnr, DbmailMessage *message, const char *mailbox);
sort_result_t *sort_validate(u64_t user_idnr, char *scriptname);
const char *sort_listextensions(void);
void sort_free_result(sort_result_t *sort_result);
diff --git a/src/sortmodule.c b/src/sortmodule.c
index d80bf9de..b3d4c331 100644
--- a/src/sortmodule.c
+++ b/src/sortmodule.c
@@ -91,7 +91,7 @@ int sort_load_driver(void)
return 0;
}
-sort_result_t *sort_process(u64_t user_idnr, DbmailMessage *message)
+sort_result_t *sort_process(u64_t user_idnr, DbmailMessage *message, const char *mailbox)
{
if (!sort)
sort_load_driver();
@@ -99,7 +99,7 @@ sort_result_t *sort_process(u64_t user_idnr, DbmailMessage *message)
TRACE(TRACE_ERR, "Error loading sort driver");
return NULL;
}
- return sort->process(user_idnr, message);
+ return sort->process(user_idnr, message, mailbox);
}
sort_result_t *sort_validate(u64_t user_idnr, char *scriptname)