mirror of
https://github.com/nginx/nginx.git
synced 2025-06-07 17:52:38 +08:00
SSL: preservation of flush flag for buffered data.
Previously, if SSL buffer was not sent we lost information that the data must be flushed.
This commit is contained in:
parent
c857dade60
commit
0f62e193dc
@ -1169,7 +1169,7 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
|
|||||||
}
|
}
|
||||||
|
|
||||||
send = 0;
|
send = 0;
|
||||||
flush = (in == NULL) ? 1 : 0;
|
flush = (in == NULL) ? 1 : buf->flush;
|
||||||
|
|
||||||
for ( ;; ) {
|
for ( ;; ) {
|
||||||
|
|
||||||
@ -1191,7 +1191,6 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
|
|||||||
|
|
||||||
if (send + size > limit) {
|
if (send + size > limit) {
|
||||||
size = (ssize_t) (limit - send);
|
size = (ssize_t) (limit - send);
|
||||||
flush = 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
|
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
|
||||||
@ -1210,7 +1209,7 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
|
|||||||
|
|
||||||
size = buf->last - buf->pos;
|
size = buf->last - buf->pos;
|
||||||
|
|
||||||
if (!flush && buf->last < buf->end) {
|
if (!flush && send < limit && buf->last < buf->end) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1221,8 +1220,7 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (n == NGX_AGAIN) {
|
if (n == NGX_AGAIN) {
|
||||||
c->buffered |= NGX_SSL_BUFFERED;
|
break;
|
||||||
return in;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
buf->pos += n;
|
buf->pos += n;
|
||||||
@ -1242,6 +1240,8 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buf->flush = flush;
|
||||||
|
|
||||||
if (buf->pos < buf->last) {
|
if (buf->pos < buf->last) {
|
||||||
c->buffered |= NGX_SSL_BUFFERED;
|
c->buffered |= NGX_SSL_BUFFERED;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user