Mais uma dica minha publicada no VivaoLinux:
Essa dica é para quem necessita compilar o Cyrus Imap 2.4.8 com suporte a replicação direto dos fontes, porém há um erro no código do sync_client que resulta no erro “Fatal error: Internal error: assertion failed: seen_db.c: 127: *seendbptr == NULL” ao tentar efetuar a replicação com o sync_client, afetando dessa forma o sincronismo dos arquivos .seen e scripts sieve.
É necessário aplicar um patch no arquivo imap/sync_client.c, esse é o conteúdo:
From 5de9eee60d947243a4b4b2f4eccc63cff2771b30 Mon Sep 17 00:00:00 2001
From: Bron Gondwana <brong@opera.com>
Date: Thu, 31 Mar 2011 05:03:10 +0000
Subject: seen: fix seen_db related crash—
— a/imap/sync_client.c
+++ b/imap/sync_client.c
@@ -1423,7 +1423,7 @@ static int update_seen_work(const char *
static int do_seen(char *user, char *uniqueid)
{
int r = 0;
– struct seen *seendb;
+ struct seen *seendb = NULL;
struct seendata sd;if (verbose)
@@ -1437,12 +1437,8 @@ static int do_seen(char *user, char *uni
if (r) return 0;r = seen_read(seendb, uniqueid, &sd);
– if (r) {
– seen_close(&seendb);
– return 0;
– }– r = update_seen_work(user, uniqueid, &sd);
+ if (!r) r = update_seen_work(user, uniqueid, &sd);seen_close(&seendb);
seen_freedata(&sd);
@@ -1876,7 +1872,7 @@ static int do_user_seen(char *user, stru
{
int r;
struct sync_seen *mseen, *rseen;
– struct seen *seendb;
+ struct seen *seendb = NULL;
struct sync_seen_list *list;/* silently ignore errors */
Copie o conteúdo acima, salve o arquivo no diretório raiz dos fontes e mande aplicar o patch:
# patch -p1 < arquivo.patch
Feito isso, compile o Cyrus normalmente.
Link informando sobre o problema: www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg904344.html