char *error_string;
bool server:1;
+ bool validated_only:1;
};
bool imap_metadata_verify_entry_name(const char *name,
i_assert((*key_r)[0] == '/');
*key_r += 1;
}
+
+ if (imtrans->validated_only)
+ *type_r |= MAIL_ATTRIBUTE_TYPE_FLAG_VALIDATED;
+
if (str_begins(*key_r, MAILBOX_ATTRIBUTE_PREFIX_DOVECOT_PVT)) {
/* Dovecot's internal attribute (mailbox or server).
don't allow accessing this. */
return imtrans;
}
+void imap_metadata_transaction_validated_only(struct imap_metadata_transaction *imtrans,
+ bool set)
+{
+ imtrans->validated_only = set;
+}
+
static void
imap_metadata_transaction_finish(struct imap_metadata_transaction **_imtrans)
{
struct imap_metadata_transaction *
imap_metadata_transaction_begin_server(struct mail_user *user);
+/* Allow access only to validated attributes within this transaction. */
+void imap_metadata_transaction_validated_only(struct imap_metadata_transaction *imtrans,
+ bool set);
+
int imap_metadata_transaction_commit(
struct imap_metadata_transaction **_imtrans,
enum mail_error *error_code_r, const char **client_error_r);