mirror of
https://github.com/nginx/nginx.git
synced 2025-08-06 06:46:16 +08:00
Mail: handling of LOGIN IMAP command untagged response.
Some checks are pending
buildbot / buildbot (push) Waiting to run
Some checks are pending
buildbot / buildbot (push) Waiting to run
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.
This commit is contained in:
parent
b2a67d2614
commit
ce88b17123
@ -1019,12 +1019,36 @@ ngx_mail_proxy_read_response(ngx_mail_session_t *s, ngx_uint_t state)
|
||||
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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user