diff options
author | Sergey Kandaurov <pluknet@nginx.com> | 2021-03-10 15:39:01 +0300 |
---|---|---|
committer | Sergey Kandaurov <pluknet@nginx.com> | 2021-03-10 15:39:01 +0300 |
commit | 02b52e4c0b71b960ce426ef80fefa359e5e6b42e (patch) | |
tree | eb36f3f05641ada335fc88ff4f04d6e75555010c /src/mail/ngx_mail_smtp_handler.c | |
parent | b7433b15fcdd97cc0d8b45407a4af1520663e54f (diff) | |
parent | 0026dded46da04b6b4522c5887bed5fceb4eda11 (diff) | |
download | nginx-02b52e4c0b71b960ce426ef80fefa359e5e6b42e.tar.gz nginx-02b52e4c0b71b960ce426ef80fefa359e5e6b42e.zip |
Merged with the default branch.
Diffstat (limited to 'src/mail/ngx_mail_smtp_handler.c')
-rw-r--r-- | src/mail/ngx_mail_smtp_handler.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/mail/ngx_mail_smtp_handler.c b/src/mail/ngx_mail_smtp_handler.c index f1017e0d8..e68ceedfd 100644 --- a/src/mail/ngx_mail_smtp_handler.c +++ b/src/mail/ngx_mail_smtp_handler.c @@ -449,6 +449,12 @@ ngx_mail_smtp_auth_state(ngx_event_t *rev) if (s->out.len) { ngx_log_debug0(NGX_LOG_DEBUG_MAIL, c->log, 0, "smtp send handler busy"); s->blocked = 1; + + if (ngx_handle_read_event(c->read, 0) != NGX_OK) { + ngx_mail_close_connection(c); + return; + } + return; } @@ -456,7 +462,16 @@ ngx_mail_smtp_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; } @@ -568,6 +583,11 @@ ngx_mail_smtp_auth_state(ngx_event_t *rev) s->arg_start = s->buffer->pos; } + if (ngx_handle_read_event(c->read, 0) != NGX_OK) { + ngx_mail_session_internal_server_error(s); + return; + } + ngx_mail_send(c->write); } } |