Index | Thread | Search

From:
Brad Smith <brad@comstyle.com>
Subject:
Re: mail/dovecot: fix infinity loop in replicator
To:
"Kirill A. Korinsky" <kirill@korins.ky>, OpenBSD ports <ports@openbsd.org>
Cc:
Klemens Nanni <kn@openbsd.org>
Date:
Fri, 4 Oct 2024 18:39:40 -0400

Download raw body.

Thread
On 2024-10-04 5:57 p.m., Kirill A. Korinsky wrote:
> ports@,
>
> Here a patch which fixed an infinity loop inside dovecot replicator when it
> is used with any value of replication_sync_timeout.
>
> This patch was backported to upstream as
> https://github.com/dovecot/core/pull/223 but replicator was removed from the
> next release and I doubt that it will be merged.
>
> Anyway, I'm using it for a more than a week and quite happy with it.

Add a comment at the top of the patch that says..

--
replicator: fixed infinity loop on sync replication
https://github.com/dovecot/core/pull/223
--

And we're good. Thanks.

> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/mail/dovecot/Makefile,v
> retrieving revision 1.318
> diff -u -p -r1.318 Makefile
> --- Makefile	16 Aug 2024 10:56:01 -0000	1.318
> +++ Makefile	4 Oct 2024 21:53:30 -0000
> @@ -11,6 +11,7 @@ COMMENT-postgresql= PostgreSQL authentic
>   V_MAJOR=	2.3
>   V_DOVECOT=	2.3.21.1
>   EPOCH=		0
> +REVISION=	0
>   
>   DISTNAME=	dovecot-${V_DOVECOT}
>   PKGNAME=	dovecot-${V_DOVECOT}
> Index: patches/patch-src_replication_replicator_replicator-queue_c
> ===================================================================
> RCS file: patches/patch-src_replication_replicator_replicator-queue_c
> diff -N patches/patch-src_replication_replicator_replicator-queue_c
> --- /dev/null	1 Jan 1970 00:00:00 -0000
> +++ patches/patch-src_replication_replicator_replicator-queue_c	4 Oct 2024 21:53:30 -0000
> @@ -0,0 +1,11 @@
> +Index: src/replication/replicator/replicator-queue.c
> +--- src/replication/replicator/replicator-queue.c.orig
> ++++ src/replication/replicator/replicator-queue.c
> +@@ -333,6 +333,7 @@ replicator_queue_handle_sync_lookups(struct replicator
> + 		} else {
> + 			array_push_back(&callbacks, &lookups[i]);
> + 			array_delete(&queue->sync_lookups, i, 1);
> ++			count--;
> + 		}
> + 	}
> +
>
>