In particular, an untagged CAPABILITY response as described in the
interim RFC 3501 internet drafts was seen in various IMAP servers.
Previously resulted in a broken connection, now an untagged response
is proxied to client.
break;
case ngx_imap_passwd:
+
+ /*
+ * untagged CAPABILITY response (draft-crispin-imapv-16),
+ * known to be sent by SmarterMail and Gmail
+ */
+
+ if (p[0] == '*' && p[1] == ' ') {
+ p += 2;
+
+ while (p < b->last - 1) {
+ if (p[0] == CR && p[1] == LF) {
+ p += 2;
+ break;
+ }
+
+ p++;
+ }
+
+ if (b->last - p < 4) {
+ return NGX_AGAIN;
+ }
+ }
+
if (ngx_strncmp(p, s->tag.data, s->tag.len) == 0) {
p += s->tag.len;
if (p[0] == 'O' && p[1] == 'K') {
return NGX_OK;
}
}
+
break;
}