aboutsummaryrefslogtreecommitdiff
path: root/src/mail/ngx_mail_proxy_module.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mail/ngx_mail_proxy_module.c')
-rw-r--r--src/mail/ngx_mail_proxy_module.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/mail/ngx_mail_proxy_module.c b/src/mail/ngx_mail_proxy_module.c
index 610f54780..299cb2ad2 100644
--- a/src/mail/ngx_mail_proxy_module.c
+++ b/src/mail/ngx_mail_proxy_module.c
@@ -233,6 +233,11 @@ ngx_mail_proxy_pop3_handler(ngx_event_t *rev)
rc = ngx_mail_proxy_read_response(s, 0);
if (rc == NGX_AGAIN) {
+ if (ngx_handle_read_event(c->read, 0) != NGX_OK) {
+ ngx_mail_proxy_internal_server_error(s);
+ return;
+ }
+
return;
}
@@ -314,6 +319,11 @@ ngx_mail_proxy_pop3_handler(ngx_event_t *rev)
return;
}
+ if (ngx_handle_read_event(c->read, 0) != NGX_OK) {
+ ngx_mail_proxy_internal_server_error(s);
+ return;
+ }
+
s->proxy->buffer->pos = s->proxy->buffer->start;
s->proxy->buffer->last = s->proxy->buffer->start;
}
@@ -346,6 +356,11 @@ ngx_mail_proxy_imap_handler(ngx_event_t *rev)
rc = ngx_mail_proxy_read_response(s, s->mail_state);
if (rc == NGX_AGAIN) {
+ if (ngx_handle_read_event(c->read, 0) != NGX_OK) {
+ ngx_mail_proxy_internal_server_error(s);
+ return;
+ }
+
return;
}
@@ -448,6 +463,11 @@ ngx_mail_proxy_imap_handler(ngx_event_t *rev)
return;
}
+ if (ngx_handle_read_event(c->read, 0) != NGX_OK) {
+ ngx_mail_proxy_internal_server_error(s);
+ return;
+ }
+
s->proxy->buffer->pos = s->proxy->buffer->start;
s->proxy->buffer->last = s->proxy->buffer->start;
}
@@ -482,6 +502,11 @@ ngx_mail_proxy_smtp_handler(ngx_event_t *rev)
rc = ngx_mail_proxy_read_response(s, s->mail_state);
if (rc == NGX_AGAIN) {
+ if (ngx_handle_read_event(c->read, 0) != NGX_OK) {
+ ngx_mail_proxy_internal_server_error(s);
+ return;
+ }
+
return;
}
@@ -763,6 +788,11 @@ ngx_mail_proxy_smtp_handler(ngx_event_t *rev)
return;
}
+ if (ngx_handle_read_event(c->read, 0) != NGX_OK) {
+ ngx_mail_proxy_internal_server_error(s);
+ return;
+ }
+
s->proxy->buffer->pos = s->proxy->buffer->start;
s->proxy->buffer->last = s->proxy->buffer->start;
}