imap-proxy.c revision 97db4761382024093f441e4bc78ba8b6a056504d
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen/* Copyright (c) 2004-2009 Dovecot authors, see the included COPYING file */
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen "NO ["IMAP_RESP_CODE_UNAVAILABLE"] "AUTH_TEMP_FAILED_MSG
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenstatic const char *const *
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainencapabilities_strip_prelogin(const char *const *capabilities)
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen unsigned int count;
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen for (; *capabilities != NULL; capabilities++) {
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen if (strncasecmp(*capabilities, "AUTH=", 5) == 0 ||
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen strcasecmp(*capabilities, "LOGINDISABLED") == 0 ||
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen strcasecmp(*capabilities, "LOGIN-REFERRALS") == 0)
d1414c09cf0d58ac983054e2f4e1a1f329272dcfTimo Sirainen new_caps = array_get_modifiable(&new_caps_arr, &count);
c57776c06ec99ba9b0dafdbf9475ea72ea8ca134Timo Sirainen qsort(new_caps, count, sizeof(*new_caps), i_strcasecmp_p);
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenstatic void proxy_write_id(struct imap_client *client, string_t *str)
94a78eb438622fa53abef1e1726714dacad4b61cTimo Sirainen "\"x-originating-ip\" \"%s\" "
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainen "\"x-originating-port\" \"%u\" "
c7480644202e5451fbed448508ea29a25cffc99cTimo Sirainen "\"x-connected-ip\" \"%s\" "
a4ac325c2802693c6b761e5a8fda961e5d7490eaTimo Sirainen "\"x-connected-port\" \"%u\")\r\n",
97c339398f1aba6f315b55a9b6ee6b020e33bea4Timo Sirainenstatic void proxy_free_password(struct imap_client *client)
97c339398f1aba6f315b55a9b6ee6b020e33bea4Timo Sirainen safe_memset(client->proxy_password, 0, strlen(client->proxy_password));
25757faf029c369a8318349dafe952e2358df1d8Timo Sirainenstatic void proxy_failed(struct imap_client *client, bool send_tagline)
8eea67470c1bd8562a62e7445d930bb2079b1a43Timo Sirainen client_send_tagline(client, PROXY_FAILURE_MSG);
return FALSE;
return TRUE;
const char *capability)
const char *const *backend_capabilities;
const char *const *proxy_capabilities;
const char *capability;
const char *line;