<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/5f2b632291b79d497760ba4abe2b2c1645dfe2cf">https://github.com/macports/macports-ports/commit/5f2b632291b79d497760ba4abe2b2c1645dfe2cf</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'> new 5f2b632291b dovecot: update to 2.3.16
</span>5f2b632291b is described below
<span style='display:block; white-space:pre;color:#808000;'>commit 5f2b632291b79d497760ba4abe2b2c1645dfe2cf
</span>Author: gctwnl <gerben.wierda@rna.nl>
AuthorDate: Sat Aug 21 16:02:54 2021 +0200
<span style='display:block; white-space:pre;color:#404040;'> dovecot: update to 2.3.16
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/63241
</span>---
mail/dovecot/Portfile | 14 +-
mail/dovecot/files/dovecot-core-pushnotify.patch | 718 ++-------------------
.../files/patch-src-master-master-settings.c.diff | 4 +-
3 files changed, 79 insertions(+), 657 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/mail/dovecot/Portfile b/mail/dovecot/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index a81b351de62..59dc5723524 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/mail/dovecot/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/mail/dovecot/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3,7 +3,7 @@
</span> PortSystem 1.0
PortGroup github 1.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup dovecot core 2.3.13
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup dovecot core 2.3.16
</span> name dovecot
revision 0
epoch 20060722
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -65,9 +65,9 @@ subport ${name}-sieve {
</span>
distname dovecot-${core_version}-pigeonhole-${version}
<span style='display:block; white-space:pre;background:#ffe0e0;'>- checksums rmd160 c79f957fd472d2185fee22b94bcc4563bc7da8ce \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 a431654689e1cf88ee81fd17b050de24fc76d7cdf29b7301da91301e80fc932b \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 1048867
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ checksums rmd160 f2cdf7ecdde7beb44b046f13187b48d89676399a \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 0fb6460d48c8b08b7d2b905d4904eda6bdee6b488f36fc9728e7909618c3a466 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 1060332
</span>
depends_lib-append \
port:${name} \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -93,9 +93,9 @@ set perl5_major_version \
</span>
if {${name} eq ${subport}} {
checksums ${distname}${extract.suffix} \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 d7efe49fb37000101af230f6202a3eabc1d375b2 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 332ad02149a463283c15b0903e9dbc8db7d8ac69a9762cfa938c5228f2a4686c \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- size 3844219
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 353ae5bfa41d2aa028637aa96187282c2ae69994 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 0760b0d999319b85f863d9972f9364280b6d4f1f121734b5fd9850e7ed706e29 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ size 3934302
</span>
extract.only ${distfiles}
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/mail/dovecot/files/dovecot-core-pushnotify.patch b/mail/dovecot/files/dovecot-core-pushnotify.patch
</span><span style='display:block; white-space:pre;color:#808080;'>index 62a02a72a98..c7d121e7b7e 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/mail/dovecot/files/dovecot-core-pushnotify.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/mail/dovecot/files/dovecot-core-pushnotify.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,6 +1,5 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./README.md ./README.md
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./README.md 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./README.md 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./README.md
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./README.md
</span> @@ -1,3 +1,53 @@
+Apple Push Notification Service (APNS) Plugin
+=============================================
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -55,10 +54,9 @@ diff -Naur ./README.md ./README.md
</span> Installation
============
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./configure.ac ./configure.ac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./configure.ac 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./configure.ac 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -930,6 +930,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -906,6 +906,7 @@
</span> src/plugins/notify/Makefile
src/plugins/notify-status/Makefile
src/plugins/push-notification/Makefile
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -66,598 +64,37 @@ diff -Naur ./configure.ac ./configure.ac
</span> src/plugins/pop3-migration/Makefile
src/plugins/quota/Makefile
src/plugins/quota-clone/Makefile
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./dovecot-core-pushnotify.patch ./dovecot-core-pushnotify.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./dovecot-core-pushnotify.patch 1969-12-31 19:00:00.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./dovecot-core-pushnotify.patch 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -0,0 +1,551 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./configure.ac ./configure.ac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./configure.ac 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./configure.ac 2019-10-10 05:40:20.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -911,6 +911,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ src/plugins/notify/Makefile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ src/plugins/notify-status/Makefile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ src/plugins/push-notification/Makefile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++src/plugins/push-notify/Makefile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ src/plugins/pop3-migration/Makefile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ src/plugins/quota/Makefile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ src/plugins/quota-clone/Makefile
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/auth/auth-settings.c ./src/auth/auth-settings.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/auth/auth-settings.c 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/auth/auth-settings.c 2019-10-08 18:37:33.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -269,6 +269,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEFLIST(passdbs, "passdb", &auth_passdb_setting_parser_info),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEFLIST(userdbs, "userdb", &auth_userdb_setting_parser_info),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ DEF_NOPREFIX(SET_STR, aps_topic),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF_NOPREFIX(SET_STR, base_dir),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF_NOPREFIX(SET_BOOL, verbose_proctitle),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF_NOPREFIX(SET_UINT, first_valid_uid),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -331,6 +333,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .passdbs = ARRAY_INIT,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .userdbs = ARRAY_INIT,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ .aps_topic = "",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .base_dir = PKG_RUNDIR,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .verbose_proctitle = FALSE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .first_valid_uid = 500,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/auth/auth-settings.h ./src/auth/auth-settings.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/auth/auth-settings.h 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/auth/auth-settings.h 2019-10-08 17:51:20.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -82,6 +82,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ARRAY(struct auth_passdb_settings *) passdbs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ARRAY(struct auth_userdb_settings *) userdbs;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *aps_topic;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const char *base_dir;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const char *ssl_client_ca_dir;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const char *ssl_client_ca_file;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/imap/Makefile.am ./src/imap/Makefile.am
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/imap/Makefile.am 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/imap/Makefile.am 2019-10-08 20:40:24.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -64,6 +64,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ cmd-unselect.c \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ cmd-unsubscribe.c \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ cmd-urlfetch.c \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ cmd-x-apple-push-service.c \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ cmd-x-cancel.c \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ cmd-x-state.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/imap/cmd-x-apple-push-service.c ./src/imap/cmd-x-apple-push-service.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/imap/cmd-x-apple-push-service.c 1969-12-31 19:00:00.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/imap/cmd-x-apple-push-service.c 2019-10-10 06:22:12.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -0,0 +1,173 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * Copyright (c) 2010-2011 Apple Inc. All rights reserved.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * Redistribution and use in source and binary forms, with or without
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * modification, are permitted provided that the following conditions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * are met:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * 1. Redistributions of source code must retain the above copyright
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * notice, this list of conditions and the following disclaimer.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * 2. Redistributions in binary form must reproduce the above
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * copyright notice, this list of conditions and the following
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * disclaimer in the documentation and/or other materials provided
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * with the distribution.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * 3. Neither the name of Apple Inc. ("Apple") nor the names of its
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * contributors may be used to endorse or promote products derived
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * from this software without specific prior written permission.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ * SUCH DAMAGE.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include "imap-common.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include "imap-id.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include "str.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include "home-expand.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include "mail-user.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include "imap-quote.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include <stdio.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include <fcntl.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include <unistd.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include <sys/un.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include <sys/stat.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include <sys/socket.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#define APS_VERSION "1"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++typedef struct msg_data_s {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ unsigned long msg;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ unsigned long pid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ char d1[128];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ char d2[512];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ char d3[512];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ char d4[512];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++} msg_data_t;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++/*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ tag1 XAPPLEPUSHSERVICE "aps-version" "1"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ "aps-account-id" "E8CD34AD-98D3-4489-A6BB-86B1D082FECE"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ "aps-device-token" "a66216ad1683d48b9933cdcc3b98a833ee1a968143f41ea494187da54715da66"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ "aps-subtopic" "com.apple.mobilemail"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++*/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++static void do_notify(const char *username, const char *aps_acct_id,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *aps_dev_token, const char *aps_sub_topic)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *push_notify_path = "@PREFIX@/var/run/dovecot/push_notify";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ msg_data_t msg_data;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ memset(&msg_data, 0, sizeof(struct msg_data_s));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ msg_data.msg = 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ strncpy(msg_data.d1, username, sizeof(msg_data.d1));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ strncpy(msg_data.d2, aps_acct_id, sizeof(msg_data.d2));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ strncpy(msg_data.d3, aps_dev_token, sizeof(msg_data.d3));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ strncpy(msg_data.d4, aps_sub_topic, sizeof(msg_data.d4));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ int soc = socket( AF_UNIX, SOCK_DGRAM, 0 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if ( soc < 0 ) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ i_warning( "open notify socket failed(%d): %m", soc );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ struct sockaddr_un sock_addr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ memset( &sock_addr, 0, sizeof(struct sockaddr_un));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ sock_addr.sun_family = AF_UNIX;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ strncpy( sock_addr.sun_path, push_notify_path, sizeof(sock_addr.sun_path) );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ socklen_t sock_len = sizeof(sock_addr.sun_family) + strlen(sock_addr.sun_path) + 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ int rc = connect(soc, (struct sockaddr *) &sock_addr, sock_len);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if ( rc < 0 ) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ i_warning("connect to notify socket %s failed: %m",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ push_notify_path);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ close(soc);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ rc = send(soc, (void *)&msg_data, sizeof(msg_data), 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if ( rc < 0 )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ i_warning("send to notify socket %s failed: %m",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ push_notify_path);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ close(soc);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++static const char *aps_reply_generate (struct client_command_context *cmd,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const struct imap_arg *args)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *aps_topic = cmd->client->set->aps_topic;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *aps_ver=NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *aps_acct_id=NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *aps_dev_token=NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *aps_sub_topic=NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *key, *value;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ /* must have a topic */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (aps_topic == NULL || *aps_topic == '\0')
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ return NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ /* scarf off the aps keys/values */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ while (imap_arg_get_astring(&args[0], &key) &&
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ imap_arg_get_astring(&args[1], &value)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (strcasecmp(key, "aps-version") == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ aps_ver = t_strdup(value);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ else if (strcasecmp(key, "aps-account-id") == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ aps_acct_id = t_strdup(value);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ else if (strcasecmp(key, "aps-device-token") == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ aps_dev_token = t_strdup(value);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ else if (strcasecmp(key, "aps-subtopic") == 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ aps_sub_topic = t_strdup(value);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ else
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ return NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ args += 2;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ /* save notification settings */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if ( aps_ver && aps_acct_id && aps_dev_token && aps_sub_topic ) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ /* subscribe to notification node */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ do_notify(cmd->client->user->username, aps_acct_id,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ aps_dev_token, aps_sub_topic);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ /* generate aps response */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ string_t *str = t_str_new(256);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ imap_append_quoted( str, "aps-version" );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ str_append_c(str, ' ');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ imap_append_quoted( str, APS_VERSION );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ str_append_c(str, ' ');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ imap_append_quoted( str, "aps-topic" );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ str_append_c(str, ' ');
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ imap_append_quoted( str, aps_topic );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ return str_c(str);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ return NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++bool cmd_x_apple_push_service(struct client_command_context *cmd)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const struct imap_arg *args;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (!client_read_args(cmd, 0, 0, &args))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ return FALSE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *reply = aps_reply_generate(cmd, args);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (reply != NULL)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ client_send_line(cmd->client,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ t_strdup_printf("* XAPPLEPUSHSERVICE %s",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ reply));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ client_send_tagline(cmd, "OK XAPPLEPUSHSERVICE completed.");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ return TRUE;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/imap/imap-client.c ./src/imap/imap-client.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/imap/imap-client.c 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/imap/imap-client.c 2019-10-08 20:42:59.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -182,6 +182,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ a chance of working */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ client_add_capability(client, "SEARCH=FUZZY");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (set->aps_topic != NULL && *set->aps_topic)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ str_append(client->capability_string, " XAPPLEPUSHSERVICE");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ mail_set = mail_user_set_get_storage_set(user);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (mail_set->mailbox_list_index) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/imap/imap-commands.c ./src/imap/imap-commands.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/imap/imap-commands.c 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/imap/imap-commands.c 2019-10-08 20:15:39.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -76,6 +76,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ { "UID SORT", cmd_sort, COMMAND_FLAG_BREAKS_SEQS },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ { "UID THREAD", cmd_thread, COMMAND_FLAG_BREAKS_SEQS },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ { "UNSELECT", cmd_unselect, COMMAND_FLAG_BREAKS_MAILBOX },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ { "XAPPLEPUSHSERVICE", cmd_x_apple_push_service, 0},
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ { "X-CANCEL", cmd_x_cancel, 0 },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ { "X-STATE", cmd_x_state, COMMAND_FLAG_REQUIRES_SYNC },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ { "XLIST", cmd_list, 0 },
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/imap/imap-commands.h ./src/imap/imap-commands.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/imap/imap-commands.h 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/imap/imap-commands.h 2019-10-08 20:16:48.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -121,6 +121,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool cmd_uid_expunge(struct client_command_context *cmd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool cmd_move(struct client_command_context *cmd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool cmd_unselect(struct client_command_context *cmd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++bool cmd_x_apple_push_service(struct client_command_context *cmd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool cmd_x_cancel(struct client_command_context *cmd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool cmd_x_state(struct client_command_context *cmd);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/imap/imap-settings.c ./src/imap/imap-settings.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/imap/imap-settings.c 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/imap/imap-settings.c 2019-10-08 17:57:36.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -73,6 +73,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_STR, imap_logout_format),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_STR, imap_id_send),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_STR, imap_id_log),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ DEF(SET_STR, aps_topic),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_ENUM, imap_fetch_failure),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_BOOL, imap_metadata),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_BOOL, imap_literal_minus),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -101,6 +102,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ "body_count=%{fetch_body_count} body_bytes=%{fetch_body_bytes}",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .imap_id_send = "name *",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .imap_id_log = "",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ .aps_topic = "",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .imap_fetch_failure = "disconnect-immediately:disconnect-after:no-after",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .imap_metadata = FALSE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .imap_literal_minus = FALSE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/imap/imap-settings.h ./src/imap/imap-settings.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/imap/imap-settings.h 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/imap/imap-settings.h 2019-10-08 17:48:14.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -31,6 +31,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const char *imap_logout_format;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const char *imap_id_send;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const char *imap_id_log;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *aps_topic;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const char *imap_fetch_failure;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool imap_metadata;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool imap_literal_minus;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/imap-login/imap-login-client.c ./src/imap-login/imap-login-client.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/imap-login/imap-login-client.c 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/imap-login/imap-login-client.c 2019-10-11 08:28:49.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -117,6 +117,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ str_append(cap_str, " STARTTLS");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (is_login_cmd_disabled(client))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ str_append(cap_str, " LOGINDISABLED");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (*imap_client->set->aps_topic)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ str_append(cap_str, " XAPPLEPUSHSERVICE");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ client_authenticate_get_capabilities(client, cap_str);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ return str_c(cap_str);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/imap-login/imap-login-settings.c ./src/imap-login/imap-login-settings.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/imap-login/imap-login-settings.c 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/imap-login/imap-login-settings.c 2019-10-08 18:33:32.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -57,6 +57,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_STR, imap_capability),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_STR, imap_id_send),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_STR, imap_id_log),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ DEF(SET_STR, aps_topic),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_BOOL, imap_literal_minus),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_BOOL, imap_id_retain),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -67,6 +68,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .imap_capability = "",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .imap_id_send = "name *",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .imap_id_log = "",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ .aps_topic = "",
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .imap_literal_minus = FALSE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ .imap_id_retain = FALSE,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/imap-login/imap-login-settings.h ./src/imap-login/imap-login-settings.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/imap-login/imap-login-settings.h 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/imap-login/imap-login-settings.h 2019-10-08 17:49:33.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -5,6 +5,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const char *imap_capability;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const char *imap_id_send;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const char *imap_id_log;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *aps_topic;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool imap_literal_minus;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool imap_id_retain;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/lib-lda/mail-deliver.c ./src/lib-lda/mail-deliver.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/lib-lda/mail-deliver.c 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/lib-lda/mail-deliver.c 2019-10-11 08:16:28.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -31,6 +31,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ };
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ deliver_mail_func_t *deliver_mail = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++deliver_hook_func_t *deliver_hook = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ struct mail_deliver_cache {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ bool filled;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -409,6 +410,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ mail_deliver_log(ctx, "saved mail to %s", mailbox_name);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ pool_unref(&changes.pool);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (deliver_hook != NULL)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ deliver_hook(ctx, mailbox);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ mail_deliver_log(ctx, "save failed to %s: %s", mailbox_name,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ mail_storage_get_last_internal_error(*storage_r, &error));
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -503,6 +507,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ /* success. message may or may not have been saved. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ret = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (!ret && deliver_hook)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ deliver_hook(ctx, ctx->rcpt_default_mailbox);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ mail_duplicate_db_deinit(&ctx->dup_db);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if (ret < 0 && mail_deliver_is_tempfailed(ctx, *storage_r)) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ muser->deliver_ctx = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/lib-lda/mail-deliver.h ./src/lib-lda/mail-deliver.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/lib-lda/mail-deliver.h 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/lib-lda/mail-deliver.h 2019-10-08 20:50:00.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -82,6 +82,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ struct mail_storage **storage_r);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ extern deliver_mail_func_t *deliver_mail;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++typedef void deliver_hook_func_t(struct mail_deliver_context *ctx,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *mailbox);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++extern deliver_hook_func_t *deliver_hook;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ const struct var_expand_table *
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ mail_deliver_ctx_get_log_var_expand_table(struct mail_deliver_context *ctx,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/plugins/Makefile.am ./src/plugins/Makefile.am
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/plugins/Makefile.am 2019-07-23 03:14:10.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/plugins/Makefile.am 2019-10-11 05:56:16.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -31,6 +31,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ notify \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ notify-status \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ push-notification \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ push-notify \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ mail-filter \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ mail-log \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ $(MAIL_LUA) \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/plugins/push-notify/Makefile.am ./src/plugins/push-notify/Makefile.am
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/plugins/push-notify/Makefile.am 1969-12-31 19:00:00.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/plugins/push-notify/Makefile.am 2019-10-11 08:48:43.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -0,0 +1,25 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++AM_CPPFLAGS = \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ -I$(top_srcdir)/src/lib \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ -I$(top_srcdir)/src/lib-lda \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ -I$(top_srcdir)/src/lib-mail \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ -I$(top_srcdir)/src/lib-smtp \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ -I$(top_srcdir)/src/lib-storage
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++NOPLUGIN_LDFLAGS =
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++lib20_push_notify_plugin_la_LDFLAGS = -module -avoid-version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++module_LTLIBRARIES = \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ lib20_push_notify_plugin.la
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++if DOVECOT_PLUGIN_DEPS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++notify_deps = ../notify/lib15_notify_plugin.la
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++lib20_push_notify_plugin_la_SOURCES = \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ push-notify-plugin.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++headers = \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ push-notify-plugin.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++pkginc_libdir = $(pkgincludedir)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++pkginc_lib_HEADERS = $(headers)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/plugins/push-notify/push-notify-plugin.c ./src/plugins/push-notify/push-notify-plugin.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/plugins/push-notify/push-notify-plugin.c 1969-12-31 19:00:00.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/plugins/push-notify/push-notify-plugin.c 2019-10-11 09:06:31.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -0,0 +1,102 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++/* Copyright (c) 2008-2011 Apple, inc. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include "lib.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include "mail-deliver.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include "mail-namespace.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include "message-address.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include "push-notify-plugin.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include <sys/un.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include <sys/stat.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include <sys/socket.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#include <sys/unistd.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++const char *push_notify_plugin_version = DOVECOT_ABI_VERSION;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++static deliver_hook_func_t *next_deliver_mail;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++struct et_list *_et_list = NULL;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++struct message_info {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *from;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *subj;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++};
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++// -----------------------------------------------------------------
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++// push_notification ()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++static void
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++push_notification(struct mail_deliver_context *ctx, const char *mailbox)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ int debug = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ int notify_sock = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *sock_path = "@PREFIX@/var/run/dovecot/push_notify";
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ ssize_t rc = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ socklen_t sock_len = 0;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ struct sockaddr_un sock_addr;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ struct msg_data_s msg_data;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (ctx->rcpt_user->mail_debug) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ debug = 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ i_info( "push-notify: push notification enabled" );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if ( strcasecmp(mailbox, "INBOX") != 0) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ i_info( "push-notify: message saved to mailbox: %s, no notification sent", mailbox );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ notify_sock = socket( AF_UNIX, SOCK_DGRAM, 0 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if ( notify_sock < 0 ) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ /* warn that connect failed but do not fail the plugin or message will not get delivered */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ i_warning( "push-notify: open socket: \"%s\" failed", sock_path );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ sock_addr.sun_family = AF_UNIX;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ strncpy( sock_addr.sun_path, "@PREFIX@/var/run/dovecot/push_notify", sizeof(sock_addr.sun_path) );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ sock_len = sizeof(sock_addr.sun_family) + strlen(sock_addr.sun_path) + 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ rc = connect(notify_sock, (struct sockaddr *) &sock_addr, sock_len);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if ( rc < 0 ) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ /* warn that connect failed but do not fail the plugin or message will not get delivered */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ i_warning( "push-notify: connect() to socket: \"%s\" failed: %m", sock_path );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ memset( &msg_data, 0, sizeof( msg_data ) );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ msg_data.msg = 3;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ /* set user/account id */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if ( ctx->rcpt_user->username != NULL ) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ strncpy( msg_data.d1, ctx->rcpt_user->username, sizeof(msg_data.d1) );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (debug)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ i_info( "push-notify: notify: %s", msg_data.d1 );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ rc = send(notify_sock, (void *)&msg_data, sizeof(struct msg_data_s), 0);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if ( rc < 0 )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ i_warning( "push-notify: send() to socket: \"%s\" failed: %m", sock_path );
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (debug)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ i_info("push-notify: data sent: %lu", rc);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ close(notify_sock);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++} // push_notification
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++static void push_notify_deliver(struct mail_deliver_context *ctx,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ const char *mailbox)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ push_notification(ctx, mailbox);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ if (next_deliver_mail != NULL)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ next_deliver_mail(ctx, mailbox);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++void push_notify_plugin_init (struct module *module ATTR_UNUSED)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ next_deliver_mail = deliver_hook;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ deliver_hook = push_notify_deliver;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++void push_notify_plugin_deinit (void)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++{
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ deliver_hook = next_deliver_mail;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+diff -Naur ./src/plugins/push-notify/push-notify-plugin.h ./src/plugins/push-notify/push-notify-plugin.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+--- ./src/plugins/push-notify/push-notify-plugin.h 1969-12-31 19:00:00.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++++ ./src/plugins/push-notify/push-notify-plugin.h 2019-10-08 20:53:46.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+@@ -0,0 +1,20 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++/* Copyright (c) 2008-2011 Apple, inc. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#ifndef __NOTIFY_PLUGIN_H__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#define __NOTIFY_PLUGIN_H__
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++struct module;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++void push_notify_plugin_init(struct module *module);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++void push_notify_plugin_deinit(void);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++typedef struct msg_data_s {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ unsigned long msg;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ unsigned long pid;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ char d1[128];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ char d2[512];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ char d3[512];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++ char d4[512];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++} msg_data_t;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-++#endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/auth/auth-settings.c ./src/auth/auth-settings.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/auth/auth-settings.c 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/auth/auth-settings.c 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -269,6 +269,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/auth/auth-settings.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/auth/auth-settings.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -271,6 +271,7 @@
</span> DEFLIST(passdbs, "passdb", &auth_passdb_setting_parser_info),
DEFLIST(userdbs, "userdb", &auth_userdb_setting_parser_info),
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF_NOPREFIX(SET_STR, aps_topic),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF_NOPREFIX(SET_STR, base_dir),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF_NOPREFIX(SET_BOOL, verbose_proctitle),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF_NOPREFIX(SET_UINT, first_valid_uid),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -331,6 +333,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ DEF_NOPREFIX(STR, aps_topic),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF_NOPREFIX(STR, base_dir),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF_NOPREFIX(BOOL, verbose_proctitle),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF_NOPREFIX(UINT, first_valid_uid),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -333,6 +334,7 @@
</span> .passdbs = ARRAY_INIT,
.userdbs = ARRAY_INIT,
+ .aps_topic = "",
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span> .base_dir = PKG_RUNDIR,
.verbose_proctitle = FALSE,
.first_valid_uid = 500,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/auth/auth-settings.h ./src/auth/auth-settings.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/auth/auth-settings.h 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/auth/auth-settings.h 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -82,6 +82,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/auth/auth-settings.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/auth/auth-settings.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -82,6 +82,7 @@
</span> ARRAY(struct auth_passdb_settings *) passdbs;
ARRAY(struct auth_userdb_settings *) userdbs;
+ const char *aps_topic;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span> const char *base_dir;
const char *ssl_client_ca_dir;
const char *ssl_client_ca_file;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/imap/Makefile.am ./src/imap/Makefile.am
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/imap/Makefile.am 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/imap/Makefile.am 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -64,6 +64,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/imap/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/imap/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -65,6 +65,7 @@
</span> cmd-unselect.c \
cmd-unsubscribe.c \
cmd-urlfetch.c \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -665,9 +102,8 @@ diff -Naur ./src/imap/Makefile.am ./src/imap/Makefile.am
</span> cmd-x-cancel.c \
cmd-x-state.c
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/imap/cmd-x-apple-push-service.c ./src/imap/cmd-x-apple-push-service.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/imap/cmd-x-apple-push-service.c 1969-12-31 19:00:00.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/imap/cmd-x-apple-push-service.c 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/imap/cmd-x-apple-push-service.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/imap/cmd-x-apple-push-service.c
</span> @@ -0,0 +1,173 @@
+/*
+ * Copyright (c) 2010-2011 Apple Inc. All rights reserved.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -842,10 +278,9 @@ diff -Naur ./src/imap/cmd-x-apple-push-service.c ./src/imap/cmd-x-apple-push-ser
</span> +
+ return TRUE;
+}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/imap/imap-client.c ./src/imap/imap-client.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/imap/imap-client.c 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/imap/imap-client.c 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -181,6 +181,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/imap/imap-client.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/imap/imap-client.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -178,6 +178,8 @@
</span> a chance of working */
client_add_capability(client, "SEARCH=FUZZY");
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -854,9 +289,8 @@ diff -Naur ./src/imap/imap-client.c ./src/imap/imap-client.c
</span>
mail_set = mail_user_set_get_storage_set(user);
if (mail_set->mailbox_list_index) {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/imap/imap-commands.c ./src/imap/imap-commands.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/imap/imap-commands.c 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/imap/imap-commands.c 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/imap/imap-commands.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/imap/imap-commands.c
</span> @@ -76,6 +76,7 @@
{ "UID SORT", cmd_sort, COMMAND_FLAG_BREAKS_SEQS },
{ "UID THREAD", cmd_thread, COMMAND_FLAG_BREAKS_SEQS },
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -865,9 +299,8 @@ diff -Naur ./src/imap/imap-commands.c ./src/imap/imap-commands.c
</span> { "X-CANCEL", cmd_x_cancel, 0 },
{ "X-STATE", cmd_x_state, COMMAND_FLAG_REQUIRES_SYNC },
{ "XLIST", cmd_list, 0 },
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/imap/imap-commands.h ./src/imap/imap-commands.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/imap/imap-commands.h 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/imap/imap-commands.h 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/imap/imap-commands.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/imap/imap-commands.h
</span> @@ -121,6 +121,7 @@
bool cmd_uid_expunge(struct client_command_context *cmd);
bool cmd_move(struct client_command_context *cmd);
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -876,18 +309,17 @@ diff -Naur ./src/imap/imap-commands.h ./src/imap/imap-commands.h
</span> bool cmd_x_cancel(struct client_command_context *cmd);
bool cmd_x_state(struct client_command_context *cmd);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/imap/imap-settings.c ./src/imap/imap-settings.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/imap/imap-settings.c 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/imap/imap-settings.c 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -73,6 +73,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF(SET_STR, imap_logout_format),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF(SET_STR, imap_id_send),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF(SET_STR, imap_id_log),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_STR, aps_topic),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF(SET_ENUM, imap_fetch_failure),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF(SET_BOOL, imap_metadata),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF(SET_BOOL, imap_literal_minus),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -101,6 +102,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/imap/imap-settings.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/imap/imap-settings.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -75,6 +75,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF(STR, imap_logout_format),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF(STR, imap_id_send),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF(STR, imap_id_log),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ DEF(STR, aps_topic),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF(ENUM, imap_fetch_failure),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF(BOOL, imap_metadata),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF(BOOL, imap_literal_minus),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -103,6 +104,7 @@
</span> "body_count=%{fetch_body_count} body_bytes=%{fetch_body_bytes}",
.imap_id_send = "name *",
.imap_id_log = "",
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -895,9 +327,8 @@ diff -Naur ./src/imap/imap-settings.c ./src/imap/imap-settings.c
</span> .imap_fetch_failure = "disconnect-immediately:disconnect-after:no-after",
.imap_metadata = FALSE,
.imap_literal_minus = FALSE,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/imap/imap-settings.h ./src/imap/imap-settings.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/imap/imap-settings.h 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/imap/imap-settings.h 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/imap/imap-settings.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/imap/imap-settings.h
</span> @@ -31,6 +31,7 @@
const char *imap_logout_format;
const char *imap_id_send;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -906,10 +337,9 @@ diff -Naur ./src/imap/imap-settings.h ./src/imap/imap-settings.h
</span> const char *imap_fetch_failure;
bool imap_metadata;
bool imap_literal_minus;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/imap-login/imap-login-client.c ./src/imap-login/imap-login-client.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/imap-login/imap-login-client.c 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/imap-login/imap-login-client.c 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -117,6 +117,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/imap-login/imap-login-client.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/imap-login/imap-login-client.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -116,6 +116,8 @@
</span> str_append(cap_str, " STARTTLS");
if (is_login_cmd_disabled(client))
str_append(cap_str, " LOGINDISABLED");
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -918,16 +348,15 @@ diff -Naur ./src/imap-login/imap-login-client.c ./src/imap-login/imap-login-clie
</span>
client_authenticate_get_capabilities(client, cap_str);
return str_c(cap_str);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/imap-login/imap-login-settings.c ./src/imap-login/imap-login-settings.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/imap-login/imap-login-settings.c 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/imap-login/imap-login-settings.c 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/imap-login/imap-login-settings.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/imap-login/imap-login-settings.c
</span> @@ -57,6 +57,7 @@
<span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF(SET_STR, imap_capability),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF(SET_STR, imap_id_send),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF(SET_STR, imap_id_log),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ DEF(SET_STR, aps_topic),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF(SET_BOOL, imap_literal_minus),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- DEF(SET_BOOL, imap_id_retain),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF(STR, imap_capability),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF(STR, imap_id_send),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF(STR, imap_id_log),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ DEF(STR, aps_topic),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF(BOOL, imap_literal_minus),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ DEF(BOOL, imap_id_retain),
</span>
@@ -67,6 +68,7 @@
.imap_capability = "",
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -937,9 +366,8 @@ diff -Naur ./src/imap-login/imap-login-settings.c ./src/imap-login/imap-login-se
</span> .imap_literal_minus = FALSE,
.imap_id_retain = FALSE,
};
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/imap-login/imap-login-settings.h ./src/imap-login/imap-login-settings.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/imap-login/imap-login-settings.h 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/imap-login/imap-login-settings.h 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/imap-login/imap-login-settings.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/imap-login/imap-login-settings.h
</span> @@ -5,6 +5,7 @@
const char *imap_capability;
const char *imap_id_send;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -948,9 +376,8 @@ diff -Naur ./src/imap-login/imap-login-settings.h ./src/imap-login/imap-login-se
</span> bool imap_literal_minus;
bool imap_id_retain;
};
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/lib-lda/mail-deliver.c ./src/lib-lda/mail-deliver.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/lib-lda/mail-deliver.c 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/lib-lda/mail-deliver.c 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/lib-lda/mail-deliver.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/lib-lda/mail-deliver.c
</span> @@ -35,6 +35,7 @@
};
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -959,7 +386,7 @@ diff -Naur ./src/lib-lda/mail-deliver.c ./src/lib-lda/mail-deliver.c
</span>
struct mail_deliver_mailbox {
union mailbox_module_context module_ctx;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -459,6 +460,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -461,6 +462,9 @@
</span> }
mail_deliver_log(ctx, "saved mail to %s", mailbox_name);
pool_unref(&changes.pool);
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -969,7 +396,7 @@ diff -Naur ./src/lib-lda/mail-deliver.c ./src/lib-lda/mail-deliver.c
</span> } else {
mail_deliver_log(ctx, "save failed to %s: %s", mailbox_name,
mail_storage_get_last_internal_error(*storage_r, &error));
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -547,6 +551,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -549,6 +553,8 @@
</span> /* success. message may or may not have been saved. */
ret = 0;
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -978,9 +405,8 @@ diff -Naur ./src/lib-lda/mail-deliver.c ./src/lib-lda/mail-deliver.c
</span> mail_duplicate_db_deinit(&ctx->dup_db);
if (ret < 0 && mail_deliver_is_tempfailed(ctx, *storage_r))
return -1;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/lib-lda/mail-deliver.h ./src/lib-lda/mail-deliver.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/lib-lda/mail-deliver.h 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/lib-lda/mail-deliver.h 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/lib-lda/mail-deliver.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/lib-lda/mail-deliver.h
</span> @@ -140,6 +140,9 @@
struct mail_storage **storage_r);
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -991,20 +417,18 @@ diff -Naur ./src/lib-lda/mail-deliver.h ./src/lib-lda/mail-deliver.h
</span>
const struct var_expand_table *
mail_deliver_ctx_get_log_var_expand_table(struct mail_deliver_context *ctx,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/plugins/Makefile.am ./src/plugins/Makefile.am
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/plugins/Makefile.am 2020-09-18 20:09:11.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/plugins/Makefile.am 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -31,6 +31,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/plugins/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/plugins/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -29,6 +29,7 @@
</span> notify \
notify-status \
push-notification \
+ push-notify \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- mail-filter \
</span> mail-log \
$(MAIL_LUA) \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/plugins/push-notify/Makefile.am ./src/plugins/push-notify/Makefile.am
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/plugins/push-notify/Makefile.am 1969-12-31 19:00:00.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/plugins/push-notify/Makefile.am 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ mailbox-alias \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/plugins/push-notify/Makefile.am
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/plugins/push-notify/Makefile.am
</span> @@ -0,0 +1,25 @@
+AM_CPPFLAGS = \
+ -I$(top_srcdir)/src/lib \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1031,9 +455,8 @@ diff -Naur ./src/plugins/push-notify/Makefile.am ./src/plugins/push-notify/Makef
</span> +
+pkginc_libdir = $(pkgincludedir)
+pkginc_lib_HEADERS = $(headers)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/plugins/push-notify/push-notify-plugin.c ./src/plugins/push-notify/push-notify-plugin.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/plugins/push-notify/push-notify-plugin.c 1969-12-31 19:00:00.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/plugins/push-notify/push-notify-plugin.c 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/plugins/push-notify/push-notify-plugin.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/plugins/push-notify/push-notify-plugin.c
</span> @@ -0,0 +1,102 @@
+/* Copyright (c) 2008-2011 Apple, inc. */
+
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1137,9 +560,8 @@ diff -Naur ./src/plugins/push-notify/push-notify-plugin.c ./src/plugins/push-not
</span> +{
+ deliver_hook = next_deliver_mail;
+}
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Naur ./src/plugins/push-notify/push-notify-plugin.h ./src/plugins/push-notify/push-notify-plugin.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- ./src/plugins/push-notify/push-notify-plugin.h 1969-12-31 19:00:00.000000000 -0500
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ ./src/plugins/push-notify/push-notify-plugin.h 2020-09-18 19:57:02.000000000 -0400
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- ./src/plugins/push-notify/push-notify-plugin.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ ./src/plugins/push-notify/push-notify-plugin.h
</span> @@ -0,0 +1,20 @@
+/* Copyright (c) 2008-2011 Apple, inc. */
+
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/mail/dovecot/files/patch-src-master-master-settings.c.diff b/mail/dovecot/files/patch-src-master-master-settings.c.diff
</span><span style='display:block; white-space:pre;color:#808080;'>index 89f0282fc6c..4cf3cd38bb1 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/mail/dovecot/files/patch-src-master-master-settings.c.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/mail/dovecot/files/patch-src-master-master-settings.c.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,6 +1,6 @@
</span> --- ./src/master/master-settings.c
+++ ./src/master/master-settings.c 2019-05-26 23:25:08.000000000 -0400
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -209,9 +209,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -210,9 +210,9 @@
</span> .protocols = "imap pop3 lmtp",
.listen = "*, ::",
.ssl = "yes:no:required",
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -13,7 +13,7 @@
</span> .default_process_limit = 100,
.default_client_limit = 1000,
.default_idle_kill = 60,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -222,7 +222,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -223,7 +223,10 @@
</span> .first_valid_uid = 500,
.last_valid_uid = 0,
.first_valid_gid = 1,
</pre><pre style='margin:0'>
</pre>