summaryrefslogtreecommitdiffhomepage
path: root/src/event/ngx_event_openssl.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2010-02-01 15:20:43 +0000
committerIgor Sysoev <igor@sysoev.ru>2010-02-01 15:20:43 +0000
commit30a57a1262b93ef60405285d206388caa6ad8081 (patch)
tree00e706d4d90b37b21de52a840bf204043d55db96 /src/event/ngx_event_openssl.c
parent94558617d1815e93b772d45627f7cdc142bf3f1b (diff)
downloadnginx-30a57a1262b93ef60405285d206388caa6ad8081.tar.gz
nginx-30a57a1262b93ef60405285d206388caa6ad8081.tar.bz2
merge r3283, r3284:
fix segfault if $limit_rate was logged fix segfault in SSL if limit_rate is used
Diffstat (limited to 'src/event/ngx_event_openssl.c')
-rw-r--r--src/event/ngx_event_openssl.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index 91609ba4c..d4b5683d6 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -986,7 +986,7 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
for ( ;; ) {
- while (in && buf->last < buf->end) {
+ while (in && buf->last < buf->end && send < limit) {
if (in->buf->last_buf || in->buf->flush) {
flush = 1;
}
@@ -1013,8 +1013,8 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
ngx_memcpy(buf->last, in->buf->pos, size);
buf->last += size;
-
in->buf->pos += size;
+ send += size;
if (in->buf->pos == in->buf->last) {
in = in->next;
@@ -1039,7 +1039,6 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
}
buf->pos += n;
- send += n;
c->sent += n;
if (n < size) {