aboutsummaryrefslogtreecommitdiffstats
path: root/imap.c
diff options
context:
space:
mode:
Diffstat (limited to 'imap.c')
-rw-r--r--imap.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/imap.c b/imap.c
index 602f504e..491c1b41 100644
--- a/imap.c
+++ b/imap.c
@@ -52,7 +52,7 @@ extern char *strstr(); /* needed on sysV68 R3V7.1. */
#define IMAP4 0 /* IMAP4 rev 0, RFC1730 */
#define IMAP4rev1 1 /* IMAP4 rev 1, RFC2060 */
-static int count, seen, recent, unseen, deletions, imap_version;
+static int count, seen, recent, unseen, deletions, imap_version, preauth;
static int expunged, expunge_period;
static char capabilities[MSGBUFSIZE+1];
@@ -116,7 +116,14 @@ int imap_ok(int sock, char *argbuf)
while (isspace(*cp))
cp++;
- if (strncmp(cp, "OK", 2) == 0)
+ if (strncmp(cp, "PREAUTH", 2) == 0)
+ {
+ if (argbuf)
+ strcpy(argbuf, cp);
+ preauth = TRUE;
+ return(PS_SUCCESS);
+ }
+ else if (strncmp(cp, "OK", 2) == 0)
{
if (argbuf)
strcpy(argbuf, cp);
@@ -767,6 +774,9 @@ int imap_getauth(int sock, struct query *ctl, char *greeting)
peek_capable = (imap_version >= IMAP4);
+ if (preauth)
+ return(PS_SUCCESS);
+
#if OPIE
if ((ctl->server.protocol == P_IMAP) && strstr(capabilities, "AUTH=X-OTP"))
{