summaryrefslogtreecommitdiffstats
path: root/src/imap/cmd-logout.c
blob: fbdd41663d40817f799d4a8d7ff000ff860df1a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* Copyright (c) 2002-2018 Dovecot authors, see the included COPYING file */

#include "imap-common.h"
#include "ostream.h"
#include "imap-commands.h"

bool cmd_logout(struct client_command_context *cmd)
{
	struct client *client = cmd->client;

	client->logged_out = TRUE;
	client_send_line(client, "* BYE Logging out");

	if (client->mailbox != NULL) {
		/* this could be done at client_disconnect() as well,
		   but eg. mbox rewrite takes a while so the waiting is
		   better to happen before "OK" message. */
		imap_client_close_mailbox(client);
	}

	client_send_tagline(cmd, "OK Logout completed.");
	client_disconnect(client, "Logged out");
	return TRUE;
}