Re: [BUG] IMAP hibernation fails on FreeBSD 15.x with "Invalid peer_dev_major value"
Jordan Ostrev via dovecot <[email protected]> Thu, 25 Jun 2026 23:10:03 +0300
| Newsgroups | gmane.mail.imap.dovecot |
|---|---|
| Message-ID | <[email protected]> |
--===============0388196833609426654==
Content-Type: multipart/alternative;
boundary="Apple-Mail=_95911F6A-4688-4696-92AC-C29A0A4C569B"
--Apple-Mail=_95911F6A-4688-4696-92AC-C29A0A4C569B
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
charset=utf-8
Hi Timo,Aki,
I have been investigating why the IMAP hibernation feature =
(imap-hibernate) fails natively under FreeBSD 15.x, and I managed to =
trace down and fix the core architectural issues.
The Root Cause Analysis
Integer Overflow on Hibernation Entry: Under FreeBSD 15.x, running =
fstat() on a network/virtual socket descriptor returns NODEV (UINT64_MAX =
or 18446744073709551615) for both major() and minor() device numbers. =
When an IMAP process tries to hibernate, it serializes these values and =
sends them to the imap-hibernate service. However, both =
src/imap-hibernate/imap-hibernate-client.c and =
src/imap/imap-master-client.c utilize 32-bit unsigned int storage for =
peer_dev_majorand peer_dev_minor, paired with str_to_uint(). This =
triggers an instant integer overflow parsing error on entry: =
imap-hibernate: Error: conn unix:imap-hibernate (uid=3D125): Failed to =
parse client input: Invalid peer_dev_major value: 18446744073709551615
Strict Verification Bug on Unhibernation (Exit): When a client wakes up, =
imap_master_client_verify() in src/imap/imap-master-client.c checks if =
the current peer_st.st_dev matches the recorded master_input->peer_dev =
via the CMP_DEV_T macro. Under FreeBSD, since these are virtual network =
descriptors, the kernel's device mapping evaluation causes a mismatch =
check failure, triggering a false positive BUG panic loop during the =
restore assertion.
The Complete 64-bit IPC Solution
To resolve this fundamentally without masking data or dropping =
validation, we need to expand the internal serialization parsers to =
uint64_t using str_to_uint64() on both ends of the IPC boundary, and add =
an explicit exemption for FreeBSD's NODEV (-1) sockets during =
verification.
Here are the patches required for a complete solution:
1. Inside src/imap-hibernate/imap-hibernate-client.c
--- src/imap-hibernate/imap-hibernate-client.c.orig 2026-06-25 =
19:49:30 UTC
+++ src/imap-hibernate/imap-hibernate-client.c
@@ -51,8 +51,7 @@ imap_hibernate_client_parse_input(const char *const *a
const char **error_r)
{
const char *key, *value;
- unsigned int peer_dev_major =3D 0, peer_dev_minor =3D 0;
-
+ uint64_t peer_dev_major =3D 0, peer_dev_minor =3D 0;
i_zero(state_r);
if (args[0] =3D=3D NULL) {
*error_r =3D "Missing username in input";
@@ -98,13 +97,13 @@ imap_hibernate_client_parse_input(const char *const =
*a
return -1;
}
} else if (strcmp(key, "peer_dev_major") =3D=3D 0) {
- if (str_to_uint(value, &peer_dev_major) < 0) {
+ if (str_to_uint64(value, &peer_dev_major) < 0) {
*error_r =3D t_strdup_printf(
"Invalid peer_dev_major value: =
%s", value);
return -1;
}
} else if (strcmp(key, "peer_dev_minor") =3D=3D 0) {
- if (str_to_uint(value, &peer_dev_minor) < 0) {
+ if (str_to_uint64(value, &peer_dev_minor) < 0) {
*error_r =3D t_strdup_printf(
"Invalid peer_dev_minor value: =
%s", value);
return -1;
@@ -244,7 +243,7 @@ imap_hibernate_client_parse_input(const char *const =
*a
return -1;
}
if (peer_dev_major !=3D 0 || peer_dev_minor !=3D 0)
- state_r->peer_dev =3D makedev(peer_dev_major, =
peer_dev_minor);
+ state_r->peer_dev =3D makedev((unsigned =
long)peer_dev_major, (unsigned long)peer_dev_minor);
return 0;
}
2. Inside src/imap/imap-master-client.c
--- src/imap/imap-master-client.c.orig 2026-05-12 10:48:57 UTC
+++ src/imap/imap-master-client.c
@@ -75,7 +75,7 @@ imap_master_client_parse_input(const char *const *args
const char **error_r)
{
const char *key, *value;
- unsigned int peer_dev_major =3D 0, peer_dev_minor =3D 0;
+ uint64_t peer_dev_major =3D 0, peer_dev_minor =3D 0;
=20
i_zero(input_r);
i_zero(stats_r);
@@ -128,13 +128,13 @@ imap_master_client_parse_input(const char *const =
*args
return -1;
}
} else if (strcmp(key, "peer_dev_major") =3D=3D 0) {
- if (str_to_uint(value, &peer_dev_major) < 0) {
+ if (str_to_uint64(value, &peer_dev_major) < 0) {
*error_r =3D t_strdup_printf(
"Invalid peer_dev_major value: =
%s", value);
return -1;
}
} else if (strcmp(key, "peer_dev_minor") =3D=3D 0) {
- if (str_to_uint(value, &peer_dev_minor) < 0) {
+ if (str_to_uint64(value, &peer_dev_minor) < 0) {
*error_r =3D t_strdup_printf(
"Invalid peer_dev_minor value: =
%s", value);
return -1;
@@ -265,7 +265,7 @@ imap_master_client_parse_input(const char *const =
*args
}
if (peer_dev_major !=3D 0 || peer_dev_minor !=3D 0) {
master_input_r->peer_dev =3D
- makedev(peer_dev_major, peer_dev_minor);
+ makedev((unsigned long)peer_dev_major, (unsigned =
long)peer_dev_minor);
}
return 0;
}
@@ -410,7 +410,8 @@ static int imap_master_client_verify(const struct =
imap
return -1;
}
if (peer_st.st_ino !=3D master_input->peer_ino ||
- !CMP_DEV_T(peer_st.st_dev, master_input->peer_dev)) {
+ (!CMP_DEV_T(peer_st.st_dev, master_input->peer_dev) &&
+ major(peer_st.st_dev) !=3D (unsigned long)-1)) {
*error_r =3D t_strdup_printf(
"BUG: Expected peer device=3D%lu,%lu inode=3D%s =
doesn't match "
"client fd's actual device=3D%lu,%lu inode=3D%s",
Empirical Testing & Results
To answer your question regarding whether incoming mail or flag =
modifications on SELECTED mailboxes are still properly noticed during =
background hibernation=E2=80=94yes, I have performed live production =
tests with these patches applied, and it works perfectly.
The Test Scenario: An active connection entered an authenticated session =
on the INBOX and executed an explicit IDLE sequence. It was successfully =
sent to sleep and offloaded to imap-hibernate (verified via doveadm =
who).
The Notification Event: A new message was transmitted to the mailbox =
externally via Gmail.
The Outcome: The internal event system seamlessly triggered the kernel =
notification layers. The imap-hibernateservice immediately picked up the =
modification event, successfully unhibernated the session, and =
seamlessly handed the socket descriptor back over to a standard imap =
worker process.
The active client instantly pushed raw streaming updates to the live =
terminal without dropping connection parameters or printing any errors:
Plaintext
+ idling
* OK Still here
* 4249 EXISTS
* 1 RECENT
* 4249 FETCH (FLAGS (\Recent $NotJunk NotJunk))
Long-term stability tests show that idle sessions remain safely tucked =
away under imap-hibernate for hours until client-side teardowns or =
standard network NAT lease expirations occur, at which point the process =
terminates gracefully with a routine Disconnected: Connection closed log =
record.
I hope this native 64-bit conversion can be merged into standard =
upstream branches to officially unbreak the feature for FreeBSD server =
deployment.
Best regards,=20
Jordan
> On 25 Jun 2026, at 19:34, Aki Tuomi <[email protected]> =
wrote:
>=20
> Did you also test that incoming mail, or changes to SELECTed mailboxes =
is noticed while hibernated?
--Apple-Mail=_95911F6A-4688-4696-92AC-C29A0A4C569B
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
ICAgSGkgVGltbyxBa2ksCgogICBJIGhhdmUgYmVlbiBpbnZlc3RpZ2F0aW5nIHdoeSB0aGUgSU1B
UCBoaWJlcm5hdGlvbiBmZWF0dXJlCiAgIChpbWFwLWhpYmVybmF0ZSkgZmFpbHMgbmF0aXZlbHkg
dW5kZXIgRnJlZUJTRCAxNS54LCBhbmQgSSBtYW5hZ2VkIHRvIHRyYWNlCiAgIGRvd24gYW5kIGZp
eCB0aGUgY29yZSBhcmNoaXRlY3R1cmFsIGlzc3Vlcy4KCiAgVGhlIFJvb3QgQ2F1c2UgQW5hbHlz
aXMKCiAgICAxLiBJbnRlZ2VyIE92ZXJmbG93IG9uIEhpYmVybmF0aW9uIEVudHJ5OiBVbmRlciBG
cmVlQlNEIDE1LngsCiAgICAgICBydW5uaW5nIGZzdGF0KCkgb24gYSBuZXR3b3JrL3ZpcnR1YWwg
c29ja2V0IGRlc2NyaXB0b3IKICAgICAgIHJldHVybnMgTk9ERVYgKFVJTlQ2NF9NQVggb3IgMTg0
NDY3NDQwNzM3MDk1NTE2MTUpIGZvcgogICAgICAgYm90aCBtYWpvcigpIGFuZCBtaW5vcigpIGRl
dmljZSBudW1iZXJzLiBXaGVuIGFuIElNQVAgcHJvY2VzcyB0cmllcyB0bwogICAgICAgaGliZXJu
YXRlLCBpdCBzZXJpYWxpemVzIHRoZXNlIHZhbHVlcyBhbmQgc2VuZHMgdGhlbSB0bwogICAgICAg
dGhlIGltYXAtaGliZXJuYXRlIHNlcnZpY2UuIEhvd2V2ZXIsCiAgICAgICBib3RoIHNyYy9pbWFw
LWhpYmVybmF0ZS9pbWFwLWhpYmVybmF0ZS1jbGllbnQuYyBhbmQgc3JjL2ltYXAvaW1hcC1tYXN0
ZXItY2xpZW50LmMgdXRpbGl6ZQogICAgICAgMzItYml0IHVuc2lnbmVkIGludCBzdG9yYWdlIGZv
ciBwZWVyX2Rldl9tYWpvcmFuZCBwZWVyX2Rldl9taW5vciwKICAgICAgIHBhaXJlZCB3aXRoIHN0
cl90b191aW50KCkuIFRoaXMgdHJpZ2dlcnMgYW4gaW5zdGFudCBpbnRlZ2VyIG92ZXJmbG93CiAg
ICAgICBwYXJzaW5nIGVycm9yIG9uIGVudHJ5OiBpbWFwLWhpYmVybmF0ZTogRXJyb3I6IGNvbm4K
ICAgICAgIHVuaXg6aW1hcC1oaWJlcm5hdGUgKHVpZD0xMjUpOiBGYWlsZWQgdG8gcGFyc2UgY2xp
ZW50IGlucHV0OiBJbnZhbGlkCiAgICAgICBwZWVyX2Rldl9tYWpvciB2YWx1ZTogMTg0NDY3NDQw
NzM3MDk1NTE2MTUKCiAgICAyLiBTdHJpY3QgVmVyaWZpY2F0aW9uIEJ1ZyBvbiBVbmhpYmVybmF0
aW9uIChFeGl0KTogV2hlbiBhIGNsaWVudCB3YWtlcwogICAgICAgdXAsIGltYXBfbWFzdGVyX2Ns
aWVudF92ZXJpZnkoKSBpbiBzcmMvaW1hcC9pbWFwLW1hc3Rlci1jbGllbnQuYyBjaGVja3MKICAg
ICAgIGlmIHRoZSBjdXJyZW50IHBlZXJfc3Quc3RfZGV2IG1hdGNoZXMgdGhlCiAgICAgICByZWNv
cmRlZCBtYXN0ZXJfaW5wdXQtPnBlZXJfZGV2IHZpYSB0aGUgQ01QX0RFVl9UIG1hY3JvLiBVbmRl
cgogICAgICAgRnJlZUJTRCwgc2luY2UgdGhlc2UgYXJlIHZpcnR1YWwgbmV0d29yayBkZXNjcmlw
dG9ycywgdGhlIGtlcm5lbCdzCiAgICAgICBkZXZpY2UgbWFwcGluZyBldmFsdWF0aW9uIGNhdXNl
cyBhIG1pc21hdGNoIGNoZWNrIGZhaWx1cmUsIHRyaWdnZXJpbmcKICAgICAgIGEgZmFsc2UgcG9z
aXRpdmUgQlVHIHBhbmljIGxvb3AgZHVyaW5nIHRoZSByZXN0b3JlIGFzc2VydGlvbi4KCiAgVGhl
IENvbXBsZXRlIDY0LWJpdCBJUEMgU29sdXRpb24KCiAgIFRvIHJlc29sdmUgdGhpcyBmdW5kYW1l
bnRhbGx5IHdpdGhvdXQgbWFza2luZyBkYXRhIG9yIGRyb3BwaW5nIHZhbGlkYXRpb24sCiAgIHdl
IG5lZWQgdG8gZXhwYW5kIHRoZSBpbnRlcm5hbCBzZXJpYWxpemF0aW9uIHBhcnNlcnMKICAgdG8g
dWludDY0X3QgdXNpbmcgc3RyX3RvX3VpbnQ2NCgpIG9uIGJvdGggZW5kcyBvZiB0aGUgSVBDIGJv
dW5kYXJ5LCBhbmQKICAgYWRkIGFuIGV4cGxpY2l0IGV4ZW1wdGlvbiBmb3IgRnJlZUJTRCdzIE5P
REVWICgtMSkgc29ja2V0cyBkdXJpbmcKICAgdmVyaWZpY2F0aW9uLgoKICAgSGVyZSBhcmUgdGhl
IHBhdGNoZXMgcmVxdWlyZWQgZm9yIGEgY29tcGxldGUgc29sdXRpb246CgogICAgMS4gSW5zaWRl
IHNyYy9pbWFwLWhpYmVybmF0ZS9pbWFwLWhpYmVybmF0ZS1jbGllbnQuYwoKIC0tLSBzcmMvaW1h
cC1oaWJlcm5hdGUvaW1hcC1oaWJlcm5hdGUtY2xpZW50LmMub3JpZyAgICAgMjAyNi0wNi0yNSAx
OTo0OTozMCBVVEMKICsrKyBzcmMvaW1hcC1oaWJlcm5hdGUvaW1hcC1oaWJlcm5hdGUtY2xpZW50
LmMKIEBAIC01MSw4ICs1MSw3IEBAIGltYXBfaGliZXJuYXRlX2NsaWVudF9wYXJzZV9pbnB1dChj
b25zdCBjaGFyICpjb25zdCAqYQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgKiplcnJvcl9yKQogIHsKICAgICAgICAgY29uc3QgY2hhciAqa2V5LCAqdmFsdWU7
CiAtICAgICAgIHVuc2lnbmVkIGludCBwZWVyX2Rldl9tYWpvciA9IDAsIHBlZXJfZGV2X21pbm9y
ID0gMDsKIC0KICsgICAgICAgdWludDY0X3QgcGVlcl9kZXZfbWFqb3IgPSAwLCBwZWVyX2Rldl9t
aW5vciA9IDA7CiAgICAgICAgIGlfemVybyhzdGF0ZV9yKTsKICAgICAgICAgaWYgKGFyZ3NbMF0g
PT0gTlVMTCkgewogICAgICAgICAgICAgICAgICplcnJvcl9yID0gIk1pc3NpbmcgdXNlcm5hbWUg
aW4gaW5wdXQiOwogQEAgLTk4LDEzICs5NywxMyBAQCBpbWFwX2hpYmVybmF0ZV9jbGllbnRfcGFy
c2VfaW5wdXQoY29uc3QgY2hhciAqY29uc3QgKmEKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoc3RyY21wKGtleSwgInBlZXJfZGV2X21ham9yIikgPT0gMCkgewogLSAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cl90b191aW50KHZhbHVlLCAmcGVlcl9kZXZfbWFq
b3IpIDwgMCkgewogKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cl90b191aW50NjQodmFs
dWUsICZwZWVyX2Rldl9tYWpvcikgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICplcnJvcl9yID0gdF9zdHJkdXBfcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJJbnZhbGlkIHBlZXJfZGV2X21ham9yIHZhbHVlOiAlcyIsIHZhbHVl
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wKGtleSwg
InBlZXJfZGV2X21pbm9yIikgPT0gMCkgewogLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0
cl90b191aW50KHZhbHVlLCAmcGVlcl9kZXZfbWlub3IpIDwgMCkgewogKyAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0cl90b191aW50NjQodmFsdWUsICZwZWVyX2Rldl9taW5vcikgPCAwKSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICplcnJvcl9yID0gdF9zdHJkdXBfcHJp
bnRmKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIHBl
ZXJfZGV2X21pbm9yIHZhbHVlOiAlcyIsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC0xOwogQEAgLTI0NCw3ICsyNDMsNyBAQCBpbWFwX2hpYmVybmF0ZV9j
bGllbnRfcGFyc2VfaW5wdXQoY29uc3QgY2hhciAqY29uc3QgKmEKICAgICAgICAgICAgICAgICBy
ZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHBlZXJfZGV2X21ham9yICE9IDAgfHwg
cGVlcl9kZXZfbWlub3IgIT0gMCkKIC0gICAgICAgICAgICAgICBzdGF0ZV9yLT5wZWVyX2RldiA9
IG1ha2VkZXYocGVlcl9kZXZfbWFqb3IsIHBlZXJfZGV2X21pbm9yKTsKICsgICAgICAgICAgICAg
ICBzdGF0ZV9yLT5wZWVyX2RldiA9IG1ha2VkZXYoKHVuc2lnbmVkIGxvbmcpcGVlcl9kZXZfbWFq
b3IsICh1bnNpZ25lZCBsb25nKXBlZXJfZGV2X21pbm9yKTsKICAgICAgICAgcmV0dXJuIDA7CiAg
fQoKICAgIDIuIEluc2lkZSBzcmMvaW1hcC9pbWFwLW1hc3Rlci1jbGllbnQuYwoKIC0tLSBzcmMv
aW1hcC9pbWFwLW1hc3Rlci1jbGllbnQuYy5vcmlnICAyMDI2LTA1LTEyIDEwOjQ4OjU3IFVUQwog
KysrIHNyYy9pbWFwL2ltYXAtbWFzdGVyLWNsaWVudC5jCiBAQCAtNzUsNyArNzUsNyBAQCBpbWFw
X21hc3Rlcl9jbGllbnRfcGFyc2VfaW5wdXQoY29uc3QgY2hhciAqY29uc3QgKmFyZ3MKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZXJyb3JfcikKICB7CiAgICAg
ICAgIGNvbnN0IGNoYXIgKmtleSwgKnZhbHVlOwogLSAgICAgICB1bnNpZ25lZCBpbnQgcGVlcl9k
ZXZfbWFqb3IgPSAwLCBwZWVyX2Rldl9taW5vciA9IDA7CiArICAgICAgIHVpbnQ2NF90IHBlZXJf
ZGV2X21ham9yID0gMCwgcGVlcl9kZXZfbWlub3IgPSAwOwoKICAgICAgICAgaV96ZXJvKGlucHV0
X3IpOwogICAgICAgICBpX3plcm8oc3RhdHNfcik7CiBAQCAtMTI4LDEzICsxMjgsMTMgQEAgaW1h
cF9tYXN0ZXJfY2xpZW50X3BhcnNlX2lucHV0KGNvbnN0IGNoYXIgKmNvbnN0ICphcmdzCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChrZXksICJwZWVyX2Rl
dl9tYWpvciIpID09IDApIHsKIC0gICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJfdG9fdWlu
dCh2YWx1ZSwgJnBlZXJfZGV2X21ham9yKSA8IDApIHsKICsgICAgICAgICAgICAgICAgICAgICAg
IGlmIChzdHJfdG9fdWludDY0KHZhbHVlLCAmcGVlcl9kZXZfbWFqb3IpIDwgMCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqZXJyb3JfciA9IHRfc3RyZHVwX3ByaW50ZigKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBwZWVyX2Rldl9t
YWpvciB2YWx1ZTogJXMiLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKHN0cmNtcChrZXksICJwZWVyX2Rldl9taW5vciIpID09IDApIHsKIC0gICAgICAg
ICAgICAgICAgICAgICAgIGlmIChzdHJfdG9fdWludCh2YWx1ZSwgJnBlZXJfZGV2X21pbm9yKSA8
IDApIHsKICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJfdG9fdWludDY0KHZhbHVlLCAm
cGVlcl9kZXZfbWlub3IpIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
ZXJyb3JfciA9IHRfc3RyZHVwX3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiSW52YWxpZCBwZWVyX2Rldl9taW5vciB2YWx1ZTogJXMiLCB2YWx1ZSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKIEBAIC0yNjUsNyArMjY1
LDcgQEAgaW1hcF9tYXN0ZXJfY2xpZW50X3BhcnNlX2lucHV0KGNvbnN0IGNoYXIgKmNvbnN0ICph
cmdzCiAgICAgICAgIH0KICAgICAgICAgaWYgKHBlZXJfZGV2X21ham9yICE9IDAgfHwgcGVlcl9k
ZXZfbWlub3IgIT0gMCkgewogICAgICAgICAgICAgICAgIG1hc3Rlcl9pbnB1dF9yLT5wZWVyX2Rl
diA9CiAtICAgICAgICAgICAgICAgICAgICAgICBtYWtlZGV2KHBlZXJfZGV2X21ham9yLCBwZWVy
X2Rldl9taW5vcik7CiArICAgICAgICAgICAgICAgICAgICAgICBtYWtlZGV2KCh1bnNpZ25lZCBs
b25nKXBlZXJfZGV2X21ham9yLCAodW5zaWduZWQgbG9uZylwZWVyX2Rldl9taW5vcik7CiAgICAg
ICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgfQogQEAgLTQxMCw3ICs0MTAsOCBAQCBzdGF0aWMg
aW50IGltYXBfbWFzdGVyX2NsaWVudF92ZXJpZnkoY29uc3Qgc3RydWN0IGltYXAKICAgICAgICAg
ICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHBlZXJfc3Quc3RfaW5v
ICE9IG1hc3Rlcl9pbnB1dC0+cGVlcl9pbm8gfHwKIC0gICAgICAgICAgICFDTVBfREVWX1QocGVl
cl9zdC5zdF9kZXYsIG1hc3Rlcl9pbnB1dC0+cGVlcl9kZXYpKSB7CiArICAgICAgICAgICAoIUNN
UF9ERVZfVChwZWVyX3N0LnN0X2RldiwgbWFzdGVyX2lucHV0LT5wZWVyX2RldikgJiYKICsgICAg
ICAgICAgICBtYWpvcihwZWVyX3N0LnN0X2RldikgIT0gKHVuc2lnbmVkIGxvbmcpLTEpKSB7CiAg
ICAgICAgICAgICAgICAgKmVycm9yX3IgPSB0X3N0cmR1cF9wcmludGYoCiAgICAgICAgICAgICAg
ICAgICAgICAgICAiQlVHOiBFeHBlY3RlZCBwZWVyIGRldmljZT0lbHUsJWx1IGlub2RlPSVzIGRv
ZXNuJ3QgbWF0Y2ggIgogICAgICAgICAgICAgICAgICAgICAgICAgImNsaWVudCBmZCdzIGFjdHVh
bCBkZXZpY2U9JWx1LCVsdSBpbm9kZT0lcyIsCgogIEVtcGlyaWNhbCBUZXN0aW5nICYgUmVzdWx0
cwoKICAgVG8gYW5zd2VyIHlvdXIgcXVlc3Rpb24gcmVnYXJkaW5nIHdoZXRoZXIgaW5jb21pbmcg
bWFpbCBvciBmbGFnCiAgIG1vZGlmaWNhdGlvbnMgb24gU0VMRUNURUQgbWFpbGJveGVzIGFyZSBz
dGlsbCBwcm9wZXJseSBub3RpY2VkIGR1cmluZwogICBiYWNrZ3JvdW5kIGhpYmVybmF0aW9uLS15
ZXMsIEkgaGF2ZSBwZXJmb3JtZWQgbGl2ZSBwcm9kdWN0aW9uIHRlc3RzIHdpdGgKICAgdGhlc2Ug
cGF0Y2hlcyBhcHBsaWVkLCBhbmQgaXQgd29ya3MgcGVyZmVjdGx5LgoKICAgICBvIFRoZSBUZXN0
IFNjZW5hcmlvOiBBbiBhY3RpdmUgY29ubmVjdGlvbiBlbnRlcmVkIGFuIGF1dGhlbnRpY2F0ZWQK
ICAgICAgIHNlc3Npb24gb24gdGhlIElOQk9YIGFuZCBleGVjdXRlZCBhbiBleHBsaWNpdCBJRExF
IHNlcXVlbmNlLiBJdCB3YXMKICAgICAgIHN1Y2Nlc3NmdWxseSBzZW50IHRvIHNsZWVwIGFuZCBv
ZmZsb2FkZWQgdG8gaW1hcC1oaWJlcm5hdGUgKHZlcmlmaWVkCiAgICAgICB2aWEgZG92ZWFkbSB3
aG8pLgoKICAgICBvIFRoZSBOb3RpZmljYXRpb24gRXZlbnQ6IEEgbmV3IG1lc3NhZ2Ugd2FzIHRy
YW5zbWl0dGVkIHRvIHRoZSBtYWlsYm94CiAgICAgICBleHRlcm5hbGx5IHZpYSBHbWFpbC4KCiAg
ICAgbyBUaGUgT3V0Y29tZTogVGhlIGludGVybmFsIGV2ZW50IHN5c3RlbSBzZWFtbGVzc2x5IHRy
aWdnZXJlZCB0aGUga2VybmVsCiAgICAgICBub3RpZmljYXRpb24gbGF5ZXJzLiBUaGUgaW1hcC1o
aWJlcm5hdGVzZXJ2aWNlIGltbWVkaWF0ZWx5IHBpY2tlZCB1cAogICAgICAgdGhlIG1vZGlmaWNh
dGlvbiBldmVudCwgc3VjY2Vzc2Z1bGx5IHVuaGliZXJuYXRlZCB0aGUgc2Vzc2lvbiwgYW5kCiAg
ICAgICBzZWFtbGVzc2x5IGhhbmRlZCB0aGUgc29ja2V0IGRlc2NyaXB0b3IgYmFjayBvdmVyIHRv
IGEKICAgICAgIHN0YW5kYXJkIGltYXAgd29ya2VyIHByb2Nlc3MuCgogICBUaGUgYWN0aXZlIGNs
aWVudCBpbnN0YW50bHkgcHVzaGVkIHJhdyBzdHJlYW1pbmcgdXBkYXRlcyB0byB0aGUgbGl2ZQog
ICB0ZXJtaW5hbCB3aXRob3V0IGRyb3BwaW5nIGNvbm5lY3Rpb24gcGFyYW1ldGVycyBvciBwcmlu
dGluZyBhbnkgZXJyb3JzOgoKICAgUGxhaW50ZXh0CgogKyBpZGxpbmcKICogT0sgU3RpbGwgaGVy
ZQogKiA0MjQ5IEVYSVNUUwogKiAxIFJFQ0VOVAogKiA0MjQ5IEZFVENIIChGTEFHUyAoXFJlY2Vu
dCAkTm90SnVuayBOb3RKdW5rKSkKCiAgIExvbmctdGVybSBzdGFiaWxpdHkgdGVzdHMgc2hvdyB0
aGF0IGlkbGUgc2Vzc2lvbnMgcmVtYWluIHNhZmVseSB0dWNrZWQKICAgYXdheSB1bmRlciBpbWFw
LWhpYmVybmF0ZSBmb3IgaG91cnMgdW50aWwgY2xpZW50LXNpZGUgdGVhcmRvd25zIG9yCiAgIHN0
YW5kYXJkIG5ldHdvcmsgTkFUIGxlYXNlIGV4cGlyYXRpb25zIG9jY3VyLCBhdCB3aGljaCBwb2lu
dCB0aGUgcHJvY2VzcwogICB0ZXJtaW5hdGVzIGdyYWNlZnVsbHkgd2l0aCBhIHJvdXRpbmUgRGlz
Y29ubmVjdGVkOiBDb25uZWN0aW9uIGNsb3NlZCBsb2cKICAgcmVjb3JkLgoKICAgSSBob3BlIHRo
aXMgbmF0aXZlIDY0LWJpdCBjb252ZXJzaW9uIGNhbiBiZSBtZXJnZWQgaW50byBzdGFuZGFyZCB1
cHN0cmVhbQogICBicmFuY2hlcyB0byBvZmZpY2lhbGx5IHVuYnJlYWsgdGhlIGZlYXR1cmUgZm9y
IEZyZWVCU0Qgc2VydmVyIGRlcGxveW1lbnQuCgogICBCZXN0IHJlZ2FyZHMsCgogICBKb3JkYW4K
CiAgICAgT24gMjUgSnVuIDIwMjYsIGF0IDE5OjM0LCBBa2kgVHVvbWkgPGFraS50dW9taUBvcGVu
LXhjaGFuZ2UuY29tPiB3cm90ZToKICAgICBEaWQgeW91IGFsc28gdGVzdCB0aGF0IGluY29taW5n
IG1haWwsIG9yIGNoYW5nZXMgdG8gU0VMRUNUZWQgbWFpbGJveGVzCiAgICAgaXMgbm90aWNlZCB3
aGlsZSBoaWJlcm5hdGVkPwo=
--Apple-Mail=_95911F6A-4688-4696-92AC-C29A0A4C569B--
--===============0388196833609426654==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]
--===============0388196833609426654==--