diff options
author | Maxim Dounin <mdounin@mdounin.ru> | 2021-03-05 17:16:16 +0300 |
---|---|---|
committer | Maxim Dounin <mdounin@mdounin.ru> | 2021-03-05 17:16:16 +0300 |
commit | 8ed63c936c1493a25bdcb351a812de1ebac8b976 (patch) | |
tree | 55307502c8769cd28079580c53edf0051dbec678 /src/mail/ngx_mail_imap_handler.c | |
parent | d5a31fdad50dbd28974cb0eb7f23948241a7559e (diff) | |
download | nginx-8ed63c936c1493a25bdcb351a812de1ebac8b976.tar.gz nginx-8ed63c936c1493a25bdcb351a812de1ebac8b976.zip |
Mail: added missing event handling after blocking events.
As long as a read event is blocked (ignored), ngx_handle_read_event()
needs to be called to make sure no further notifications will be
triggered when using level-triggered event methods, such as select() or
poll().
Diffstat (limited to 'src/mail/ngx_mail_imap_handler.c')
-rw-r--r-- | src/mail/ngx_mail_imap_handler.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/mail/ngx_mail_imap_handler.c b/src/mail/ngx_mail_imap_handler.c index 3bf09ec3c..e31e4d0c8 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; } |