summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--testing/dbmail/gmime-2.6.patch32
-rw-r--r--testing/dbmail/post-rc3.patch329
2 files changed, 361 insertions, 0 deletions
diff --git a/testing/dbmail/gmime-2.6.patch b/testing/dbmail/gmime-2.6.patch
new file mode 100644
index 000000000..105ec5e6b
--- /dev/null
+++ b/testing/dbmail/gmime-2.6.patch
@@ -0,0 +1,32 @@
+--- a/acinclude.m4.orig
++++ b/acinclude.m4
+@@ -407,7 +407,7 @@
+ AC_MSG_ERROR([pkg-config executable not found. Make sure pkg-config is in your path])
+ else
+ AC_MSG_CHECKING([GMime headers])
+- ac_gmime_cflags=`${gmimeconfig} --cflags gmime-2.4`
++ ac_gmime_cflags=`${gmimeconfig} --cflags gmime-2.6`
+ if test -z "$ac_gmime_cflags"
+ then
+ AC_MSG_RESULT([no])
+@@ -418,7 +418,7 @@
+ fi
+
+ AC_MSG_CHECKING([GMime libraries])
+- ac_gmime_libs=`${gmimeconfig} --libs gmime-2.4`
++ ac_gmime_libs=`${gmimeconfig} --libs gmime-2.6`
+ if test -z "$ac_gmime_libs"
+ then
+ AC_MSG_RESULT([no])
+@@ -427,9 +427,9 @@
+ LDFLAGS="$LDFLAGS $ac_gmime_libs"
+ AC_MSG_RESULT([$ac_gmime_libs])
+ fi
+- ac_gmime_minvers="2.4.6"
++ ac_gmime_minvers="2.6.0"
+ AC_MSG_CHECKING([GMime version >= $ac_gmime_minvers])
+- ac_gmime_vers=`${gmimeconfig} --atleast-version=$ac_gmime_minvers gmime-2.4 && echo yes`
++ ac_gmime_vers=`${gmimeconfig} --atleast-version=$ac_gmime_minvers gmime-2.6 && echo yes`
+ if test -z "$ac_gmime_vers"
+ then
+ AC_MSG_ERROR([At least GMime version $ac_gmime_minvers is required.])
diff --git a/testing/dbmail/post-rc3.patch b/testing/dbmail/post-rc3.patch
new file mode 100644
index 000000000..86726a114
--- /dev/null
+++ b/testing/dbmail/post-rc3.patch
@@ -0,0 +1,329 @@
+From b73172be67b4665b04c791f914cf284e01dea33c Mon Sep 17 00:00:00 2001
+From: Paul J Stevens <paul@nfg.nl>
+Date: Mon, 15 Aug 2011 16:11:32 +0200
+Subject: [PATCH 1/8] fix broken SEARCH TEXT (#912)'
+
+---
+ src/dbmail-mailbox.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/src/dbmail-mailbox.c b/src/dbmail-mailbox.c
+index 3491105..09be275 100644
+--- a/src/dbmail-mailbox.c
++++ b/src/dbmail-mailbox.c
+@@ -1183,7 +1183,7 @@ static GTree * mailbox_search(DbmailMailbox *self, search_key_t *s)
+
+ case IST_DATA_TEXT:
+
+- g_string_printf(q,"SELECT DISTINCT m.message_idnr"
++ g_string_printf(q,"SELECT DISTINCT m.message_idnr "
+ "FROM %smimeparts k "
+ "LEFT JOIN %spartlists l ON k.id=l.part_id "
+ "LEFT JOIN %sphysmessage p ON l.physmessage_id=p.id "
+--
+1.7.7.1
+
+From cd5cc297ab1c05103c45f6ee903298eca5357a19 Mon Sep 17 00:00:00 2001
+From: Paul J Stevens <paul@nfg.nl>
+Date: Sat, 20 Aug 2011 14:00:35 +0200
+Subject: [PATCH 2/8] fix dbmail.h generation (#916)
+
+---
+ acinclude.m4 | 2 +-
+ configure | 2 +-
+ src/dbmail.h.in | 4 +---
+ 3 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 2d2960d..fbf702a 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -300,7 +300,7 @@ AC_DEFUN([DM_CHECK_ZDB], [dnl
+ ])
+
+ AC_DEFUN([DM_SET_SQLITECREATE], [dnl
+- SQLITECREATE=`sed -e 's/\"/\\\"/g' -e 's/^/\"/' -e 's/$/\\\n\" \\\\/' sql/sqlite/create_tables.sqlite`
++ SQLITECREATE=`sed -e 's/\"/\\\"/g' -e 's/^/\"/' -e 's/$/\\\n\"/' -e '$!s/$/ \\\\/' sql/sqlite/create_tables.sqlite`
+ ])
+
+ AC_DEFUN([DM_CHECK_MATH], [dnl
+diff --git a/configure b/configure
+index 6be85f6..e9d6e84 100755
+--- a/configure
++++ b/configure
+@@ -6697,7 +6697,7 @@ if test "x$ac_cv_lib_crypt_crypt" = x""yes; then :
+ fi
+
+
+- SQLITECREATE=`sed -e 's/\"/\\\"/g' -e 's/^/\"/' -e 's/$/\\\n\" \\\\/' sql/sqlite/create_tables.sqlite`
++ SQLITECREATE=`sed -e 's/\"/\\\"/g' -e 's/^/\"/' -e 's/$/\\\n\"/' -e '$!s/$/ \\\\/' sql/sqlite/create_tables.sqlite`
+
+
+
+diff --git a/src/dbmail.h.in b/src/dbmail.h.in
+index 956246a..15acc31 100644
+--- a/src/dbmail.h.in
++++ b/src/dbmail.h.in
+@@ -183,9 +183,7 @@
+ ""
+
+ /* include sql/sqlite/create_tables.sqlite for autocreation */
+-#define DM_SQLITECREATE \
+-@SQLITECREATE@
+-""
++#define DM_SQLITECREATE @SQLITECREATE@
+
+ /** default directory and extension for pidfiles */
+ #define DEFAULT_PID_DIR "@DM_STATEDIR@"
+--
+1.7.7.1
+
+From 0e640aa861ceebebff59877440d084fa2dcd9efd Mon Sep 17 00:00:00 2001
+From: Paul J Stevens <paul@nfg.nl>
+Date: Thu, 22 Sep 2011 16:39:53 +0200
+Subject: [PATCH 3/8] fix IDLE regression (#927)
+
+---
+ src/imapcommands.c | 2 ++
+ 1 files changed, 2 insertions(+), 0 deletions(-)
+
+diff --git a/src/imapcommands.c b/src/imapcommands.c
+index 7bfe3c1..8159214 100644
+--- a/src/imapcommands.c
++++ b/src/imapcommands.c
+@@ -1113,6 +1113,7 @@ int _ic_idle(ImapSession *self)
+ int idle_timeout = IDLE_TIMEOUT;
+ field_t val;
+
++ ci_cork(self->ci);
+ GETCONFIGVALUE("idle_timeout", "IMAP", val);
+ if ( strlen(val) && (idle_timeout = atoi(val)) <= 0 ) {
+ TRACE(TRACE_ERR, "[%p] illegal value for idle_timeout [%s]", self, val);
+@@ -1125,6 +1126,7 @@ int _ic_idle(ImapSession *self)
+ dbmail_imap_session_buff_printf(self, "+ idling\r\n");
+ dbmail_imap_session_mailbox_status(self,TRUE);
+ dbmail_imap_session_buff_flush(self);
++ ci_uncork(self->ci);
+
+ return 0;
+ }
+--
+1.7.7.1
+
+From a82434e61e10f7e3e6b5feefb12c341ad96229ea Mon Sep 17 00:00:00 2001
+From: Paul J Stevens <paul@nfg.nl>
+Date: Fri, 21 Oct 2011 15:57:31 +0200
+Subject: [PATCH 4/8] handle hangups better during read (#932)
+
+---
+ src/imap4.c | 9 ++++++---
+ 1 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/imap4.c b/src/imap4.c
+index 5fbf849..1d6869a 100644
+--- a/src/imap4.c
++++ b/src/imap4.c
+@@ -143,20 +143,23 @@ void imap_cb_read(void *arg)
+ {
+ ImapSession *session = (ImapSession *) arg;
+
+- TRACE(TRACE_DEBUG,"reading...");
+-
+ ci_read_cb(session->ci);
+
+ size_t have = session->ci->read_buffer->len;
++ size_t need = session->ci->rbuff_size;
++
++ int enough = (need>0?(have == 0):(have > 0));
++
+ int state = session->ci->client_state;
+
++ TRACE(TRACE_DEBUG,"reading %d: %ld/%ld", enough, have, need);
+ if (state & CLIENT_ERR) {
+ ci_cork(session->ci);
+ dbmail_imap_session_set_state(session,CLIENTSTATE_ERROR);
+ return;
+ }
+ if (state & CLIENT_EOF) {
+- if (have)
++ if (enough)
+ imap_handle_input(session);
+ else
+ imap_session_bailout(session);
+--
+1.7.7.1
+
+From f9f332c7b917c6b0683b0d43a0f614d675181855 Mon Sep 17 00:00:00 2001
+From: Paul J Stevens <paul@nfg.nl>
+Date: Sat, 22 Oct 2011 13:53:12 +0200
+Subject: [PATCH 5/8] gracefully degrade after decoding error (#930)
+
+---
+ src/dbmail-message.c | 8 +++++---
+ 1 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/dbmail-message.c b/src/dbmail-message.c
+index e62cfb4..cf8fc23 100644
+--- a/src/dbmail-message.c
++++ b/src/dbmail-message.c
+@@ -1457,12 +1457,11 @@ static int _header_value_get_id(const char *value, const char *sortfield, const
+ CATCH(SQLException)
+ LOG_SQLERROR;
+ db_rollback_transaction(c);
++ *id = 0;
+ FINALLY
+ db_con_close(c);
+ END_TRY;
+
+- assert(*id);
+-
+ g_free(hash);
+
+ return TRUE;
+@@ -1596,7 +1595,10 @@ static gboolean _header_cache(const char UNUSED *key, const char *header, gpoint
+ g_free(value);
+
+ /* Insert relation between physmessage, header name and header value */
+- _header_insert(self->physid, headername_id, headervalue_id);
++ if (headervalue_id)
++ _header_insert(self->physid, headername_id, headervalue_id);
++ else
++ TRACE(TRACE_INFO, "error inserting headervalue. skipping.");
+
+ headervalue_id=0;
+
+--
+1.7.7.1
+
+From 11bcc6294807be46ded604b23cad2648fcbf7c5b Mon Sep 17 00:00:00 2001
+From: Paul J Stevens <paul@nfg.nl>
+Date: Sat, 22 Oct 2011 18:08:59 +0200
+Subject: [PATCH 6/8] reset timeout after idle is done (#932)
+
+---
+ src/imap4.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/src/imap4.c b/src/imap4.c
+index 1d6869a..69a7a7e 100644
+--- a/src/imap4.c
++++ b/src/imap4.c
+@@ -468,6 +468,7 @@ void dbmail_imap_session_reset(ImapSession *session)
+ session->parser_state = FALSE;
+ dbmail_imap_session_args_free(session, FALSE);
+
++ session->ci->timeout->tv_sec = server_conf->timeout;
+ ci_uncork(session->ci);
+
+ return;
+--
+1.7.7.1
+
+From 8dc7ab5ec45a4321af191fecd7da1f50d76d3ce1 Mon Sep 17 00:00:00 2001
+From: Paul J Stevens <paul@nfg.nl>
+Date: Mon, 24 Oct 2011 16:23:59 +0200
+Subject: [PATCH 7/8] call database schema version check on all connections
+
+---
+ src/dm_db.c | 17 ++++++++++++-----
+ src/main.c | 5 -----
+ 2 files changed, 12 insertions(+), 10 deletions(-)
+
+diff --git a/src/dm_db.c b/src/dm_db.c
+index 22cfe95..ec516e8 100644
+--- a/src/dm_db.c
++++ b/src/dm_db.c
+@@ -216,7 +216,7 @@ int db_connect(void)
+ db_connected = 3;
+ db_con_close(c);
+
+- return 0;
++ return db_check_version();
+ }
+
+ /* But sometimes this gets called after help text or an
+@@ -803,19 +803,26 @@ static void check_table_exists(C c, const char *table, const char *errormessage)
+ int db_check_version(void)
+ {
+ C c = db_con_get();
++ volatile int ok = 0;
+ TRY
+ check_table_exists(c, "physmessage", "pre-2.0 database incompatible. You need to run the conversion script");
+ check_table_exists(c, "headervalue", "2.0 database incompatible. You need to add the header tables.");
+- check_table_exists(c, "envelope", "2.1 database incompatible. You need to add the envelopes table and run dbmail-util -by");
+- check_table_exists(c, "mimeparts", "2.3 database incompatible.");
+- check_table_exists(c, "header", "2.3.5 database incompatible - single instance header storage missing.");
++ check_table_exists(c, "envelope", "2.1+ database incompatible. You need to add the envelopes table and run dbmail-util -by");
++ check_table_exists(c, "mimeparts", "3.x database incompatible.");
++ check_table_exists(c, "header", "3.x database incompatible - single instance header storage missing.");
++ ok = 1;
+ CATCH(SQLException)
+ LOG_SQLERROR;
+ FINALLY
+ db_con_close(c);
+ END_TRY;
+
+- return DM_SUCCESS;
++ if (ok)
++ TRACE(TRACE_DEBUG,"Tables OK");
++ else
++ TRACE(TRACE_WARNING,"Schema version incompatible. Bailing out");
++
++ return ok?DM_SUCCESS:DM_EQUERY;
+ }
+
+ /* test existence of usermap table */
+diff --git a/src/main.c b/src/main.c
+index f9c8328..4065997 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -240,11 +240,6 @@ int main(int argc, char *argv[])
+ goto freeall;
+ }
+
+- if (db_check_version() != 0) {
+- exitcode = EX_TEMPFAIL;
+- goto freeall;
+- }
+-
+ /* read the whole message */
+ memset(buf, 0, sizeof(buf));
+ while ( (n = read(fileno(stdin), (void *)buf, READ_SIZE-1)) > 0) {
+--
+1.7.7.1
+
+From 105cfefa0a1cc7366b66c6759e05e46ae5a6e53c Mon Sep 17 00:00:00 2001
+From: Paul J Stevens <paul@nfg.nl>
+Date: Sat, 29 Oct 2011 15:57:09 +0200
+Subject: [PATCH 8/8] gmime-2.6 compatibility (#935)
+
+---
+ src/dbmail-message.c | 5 ++---
+ 1 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/src/dbmail-message.c b/src/dbmail-message.c
+index cf8fc23..8a1a66c 100644
+--- a/src/dbmail-message.c
++++ b/src/dbmail-message.c
+@@ -561,7 +561,7 @@ gboolean store_mime_object(GMimeObject *parent, GMimeObject *object, DbmailMessa
+ // part of the rfc822 headers
+ skiphead = TRUE;
+
+- g_mime_header_list_set_raw (GMIME_MESSAGE(object)->mime_part->headers, NULL);
++ g_mime_header_list_set_stream (GMIME_MESSAGE(object)->mime_part->headers, NULL);
+ mime_part = g_mime_message_get_mime_part((GMimeMessage *)object);
+ } else
+ mime_part = object;
+@@ -1744,8 +1744,7 @@ DbmailMessage * dbmail_message_construct(DbmailMessage *self,
+ TRACE(TRACE_DEBUG, "from: [%s] to: [%s] subject: [%s] body: [%s]", from, to, subject, body);
+ g_mime_message_set_sender(message, from);
+ g_mime_message_set_subject(message, subject);
+- g_mime_object_set_header(GMIME_OBJECT(message), "To", to);
+- g_mime_message_add_recipient(message, GMIME_RECIPIENT_TYPE_TO, "", to);
++ g_mime_message_add_recipient(message, GMIME_RECIPIENT_TYPE_TO, NULL, to);
+
+ // construct mime-part
+ mime_part = g_mime_part_new();
+--
+1.7.7.1
+