<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>