}
send = 0;
- flush = (in == NULL) ? 1 : 0;
+ flush = (in == NULL) ? 1 : buf->flush;
for ( ;; ) {
if (send + size > limit) {
size = (ssize_t) (limit - send);
- flush = 1;
}
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
size = buf->last - buf->pos;
- if (!flush && buf->last < buf->end) {
+ if (!flush && send < limit && buf->last < buf->end) {
break;
}
}
if (n == NGX_AGAIN) {
- c->buffered |= NGX_SSL_BUFFERED;
- return in;
+ break;
}
buf->pos += n;
}
}
+ buf->flush = flush;
+
if (buf->pos < buf->last) {
c->buffered |= NGX_SSL_BUFFERED;