diff options
author | Matthias Andree <matthias.andree@gmx.de> | 2011-05-22 23:14:01 +0200 |
---|---|---|
committer | Matthias Andree <matthias.andree@gmx.de> | 2011-05-22 23:14:01 +0200 |
commit | 1e909f8b8b6f9705134389164a211e1eb591c4b6 (patch) | |
tree | ed197327ae4f88131c7166c04880626c416c7c92 | |
parent | 47c05b10018f5ec7493e4bd9f521aaa18d96f1e2 (diff) | |
download | fetchmail-1e909f8b8b6f9705134389164a211e1eb591c4b6.tar.gz fetchmail-1e909f8b8b6f9705134389164a211e1eb591c4b6.tar.bz2 fetchmail-1e909f8b8b6f9705134389164a211e1eb591c4b6.zip |
Handle socket errors on CAPABILITY probes.
-rw-r--r-- | imap.c | 12 |
1 files changed, 9 insertions, 3 deletions
@@ -324,7 +324,7 @@ static void imap_canonicalize(char *result, char *raw, size_t maxlen) result[j] = '\0'; } -static void capa_probe(int sock, struct query *ctl) +static int capa_probe(int sock, struct query *ctl) /* set capability variables from a CAPA probe */ { int ok; @@ -360,6 +360,8 @@ static void capa_probe(int sock, struct query *ctl) if (outlevel >= O_DEBUG) report(stdout, GT_("Protocol identified as IMAP2 or IMAP2BIS\n")); } + else + return ok; /* * Handle idling. We depend on coming through here on startup @@ -377,6 +379,8 @@ static void capa_probe(int sock, struct query *ctl) } peek_capable = (imap_version >= IMAP4); + + return PS_SUCCESS; } static int do_authcert (int sock, const char *command, const char *name) @@ -412,7 +416,8 @@ static int imap_getauth(int sock, struct query *ctl, char *greeting) else expunge_period = 1; - capa_probe(sock, ctl); + if ((ok = capa_probe(sock, ctl))) + return ok; /* * If either (a) we saw a PREAUTH token in the greeting, or @@ -459,7 +464,8 @@ static int imap_getauth(int sock, struct query *ctl, char *greeting) * Now that we're confident in our TLS connection we can * guarantee a secure capability re-probe. */ - capa_probe(sock, ctl); + if ((ok = capa_probe(sock, ctl))) + return ok; if (outlevel >= O_VERBOSE) { report(stdout, GT_("%s: upgrade to TLS succeeded.\n"), commonname); |