Mercurial > hg > nginx-quic
comparison src/event/ngx_event_openssl.c @ 3437:90d746a95258 stable-0.7
merge r3283, r3284:
fix segfault if $limit_rate was logged
fix segfault in SSL if limit_rate is used
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 01 Feb 2010 15:20:43 +0000 |
parents | 966f9cf9c7da |
children | d513f9d30208 |
comparison
equal
deleted
inserted
replaced
3436:fc81ff0c2adc | 3437:90d746a95258 |
---|---|
984 send = 0; | 984 send = 0; |
985 flush = (in == NULL) ? 1 : 0; | 985 flush = (in == NULL) ? 1 : 0; |
986 | 986 |
987 for ( ;; ) { | 987 for ( ;; ) { |
988 | 988 |
989 while (in && buf->last < buf->end) { | 989 while (in && buf->last < buf->end && send < limit) { |
990 if (in->buf->last_buf || in->buf->flush) { | 990 if (in->buf->last_buf || in->buf->flush) { |
991 flush = 1; | 991 flush = 1; |
992 } | 992 } |
993 | 993 |
994 if (ngx_buf_special(in->buf)) { | 994 if (ngx_buf_special(in->buf)) { |
1011 "SSL buf copy: %d", size); | 1011 "SSL buf copy: %d", size); |
1012 | 1012 |
1013 ngx_memcpy(buf->last, in->buf->pos, size); | 1013 ngx_memcpy(buf->last, in->buf->pos, size); |
1014 | 1014 |
1015 buf->last += size; | 1015 buf->last += size; |
1016 | |
1017 in->buf->pos += size; | 1016 in->buf->pos += size; |
1017 send += size; | |
1018 | 1018 |
1019 if (in->buf->pos == in->buf->last) { | 1019 if (in->buf->pos == in->buf->last) { |
1020 in = in->next; | 1020 in = in->next; |
1021 } | 1021 } |
1022 } | 1022 } |
1037 c->buffered |= NGX_SSL_BUFFERED; | 1037 c->buffered |= NGX_SSL_BUFFERED; |
1038 return in; | 1038 return in; |
1039 } | 1039 } |
1040 | 1040 |
1041 buf->pos += n; | 1041 buf->pos += n; |
1042 send += n; | |
1043 c->sent += n; | 1042 c->sent += n; |
1044 | 1043 |
1045 if (n < size) { | 1044 if (n < size) { |
1046 break; | 1045 break; |
1047 } | 1046 } |