Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/event/ngx_event_openssl.c')
-rw-r--r--src/event/ngx_event_openssl.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index 788463c3d..5a724af26 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -592,7 +592,9 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
ssize_t send, size;
ngx_buf_t *buf;
- if (!c->ssl->buffer || (in && in->next == NULL && !c->buffered)) {
+ if (!c->ssl->buffer
+ || (in && in->next == NULL && !(c->buffered & NGX_SSL_BUFFERED)))
+ {
/*
* we avoid a buffer copy if
@@ -613,7 +615,7 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
}
if (n == NGX_AGAIN) {
- c->buffered = 1;
+ c->buffered |= NGX_SSL_BUFFERED;
return in;
}
@@ -689,7 +691,7 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
}
if (n == NGX_AGAIN) {
- c->buffered = 1;
+ c->buffered |= NGX_SSL_BUFFERED;
return in;
}
@@ -711,7 +713,12 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
}
}
- c->buffered = (buf->pos < buf->last) ? 1 : 0;
+ if (buf->pos < buf->last) {
+ c->buffered |= NGX_SSL_BUFFERED;
+
+ } else {
+ c->buffered &= ~NGX_SSL_BUFFERED;
+ }
return in;
}