imap-state.h revision f24edebe360d3effe584a884aa7d119daf3fd371
5f5870385cff47efd2f58e7892f251cf13761528Timo Sirainen#ifndef IMAP_STATE_H
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen#define IMAP_STATE_H
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen/* Export the IMAP client state to the given buffer. Returns 1 if ok,
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen 0 if state couldn't be exported, -1 if temporary internal error error. */
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainenint imap_state_export_internal(struct client *client, buffer_t *dest,
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen const char **error_r);
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainenint imap_state_export_external(struct client *client, buffer_t *dest,
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen const char **error_r);
5f5713d6468dca1acf3d350dd8a33057331f78c5Timo Sirainen
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen/* Returns 1 if ok, 0 if state was corrupted, -1 if other error. Internal state
5f5713d6468dca1acf3d350dd8a33057331f78c5Timo Sirainen comes from another Dovecot component, which can override IP addresses,
5f5713d6468dca1acf3d350dd8a33057331f78c5Timo Sirainen session IDs, etc. */
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainenint imap_state_import_internal(struct client *client,
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen const unsigned char *data, size_t size,
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen const char **error_r);
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainenint imap_state_import_external(struct client *client,
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen const unsigned char *data, size_t size,
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen const char **error_r);
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen/* INTERNAL API: Note that the "internal" flag specifies whether we're doing
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen the import/export from/to another Dovecot component or an untrusted
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen IMAP client. */
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainenint imap_state_export_base(struct client *client, bool internal,
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen buffer_t *dest, const char **error_r);
5f5713d6468dca1acf3d350dd8a33057331f78c5Timo Sirainenssize_t imap_state_import_base(struct client *client, bool internal,
5f5713d6468dca1acf3d350dd8a33057331f78c5Timo Sirainen const unsigned char *data, size_t size,
5f5713d6468dca1acf3d350dd8a33057331f78c5Timo Sirainen const char **error_r);
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainenvoid imap_state_import_idle_cmd_tag(struct client *client, const char *tag);
377dd19a90436b8f96902af741a3ea130bc3fe75Timo Sirainen#endif
2670cd577aa57eb9f915a4f4220ae48c9b4fc5fbTimo Sirainen