aboutsummaryrefslogtreecommitdiff
path: root/src/mail/ngx_mail_imap_handler.c
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2021-03-10 15:39:01 +0300
committerSergey Kandaurov <pluknet@nginx.com>2021-03-10 15:39:01 +0300
commit02b52e4c0b71b960ce426ef80fefa359e5e6b42e (patch)
treeeb36f3f05641ada335fc88ff4f04d6e75555010c /src/mail/ngx_mail_imap_handler.c
parentb7433b15fcdd97cc0d8b45407a4af1520663e54f (diff)
parent0026dded46da04b6b4522c5887bed5fceb4eda11 (diff)
downloadnginx-02b52e4c0b71b960ce426ef80fefa359e5e6b42e.tar.gz
nginx-02b52e4c0b71b960ce426ef80fefa359e5e6b42e.zip
Merged with the default branch.
Diffstat (limited to 'src/mail/ngx_mail_imap_handler.c')
-rw-r--r--src/mail/ngx_mail_imap_handler.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/mail/ngx_mail_imap_handler.c b/src/mail/ngx_mail_imap_handler.c
index 3bf09ec3c..5dfdd7601 100644
--- a/src/mail/ngx_mail_imap_handler.c
+++ b/src/mail/ngx_mail_imap_handler.c
@@ -123,6 +123,12 @@ ngx_mail_imap_auth_state(ngx_event_t *rev)
if (s->out.len) {
ngx_log_debug0(NGX_LOG_DEBUG_MAIL, c->log, 0, "imap send handler busy");
s->blocked = 1;
+
+ if (ngx_handle_read_event(c->read, 0) != NGX_OK) {
+ ngx_mail_close_connection(c);
+ return;
+ }
+
return;
}
@@ -130,7 +136,16 @@ ngx_mail_imap_auth_state(ngx_event_t *rev)
rc = ngx_mail_read_command(s, c);
- if (rc == NGX_AGAIN || rc == NGX_ERROR) {
+ if (rc == NGX_AGAIN) {
+ if (ngx_handle_read_event(c->read, 0) != NGX_OK) {
+ ngx_mail_session_internal_server_error(s);
+ return;
+ }
+
+ return;
+ }
+
+ if (rc == NGX_ERROR) {
return;
}
@@ -293,6 +308,11 @@ ngx_mail_imap_auth_state(ngx_event_t *rev)
}
}
+ if (ngx_handle_read_event(c->read, 0) != NGX_OK) {
+ ngx_mail_session_internal_server_error(s);
+ return;
+ }
+
ngx_mail_send(c->write);
}