Mercurial > hg > nginx-quic
comparison src/event/ngx_event_openssl.c @ 1779:06014cfdb5b1
create ssl buffer on demand and free it before keep-alive
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 26 Dec 2007 21:07:30 +0000 |
parents | 14510c3cc6cb |
children | 3a0132e2be2c |
comparison
equal
deleted
inserted
replaced
1778:14510c3cc6cb | 1779:06014cfdb5b1 |
---|---|
342 sc = ngx_pcalloc(c->pool, sizeof(ngx_ssl_connection_t)); | 342 sc = ngx_pcalloc(c->pool, sizeof(ngx_ssl_connection_t)); |
343 if (sc == NULL) { | 343 if (sc == NULL) { |
344 return NGX_ERROR; | 344 return NGX_ERROR; |
345 } | 345 } |
346 | 346 |
347 if (flags & NGX_SSL_BUFFER) { | 347 sc->buffer = ((flags & NGX_SSL_BUFFER) != 0); |
348 sc->buffer = 1; | |
349 | |
350 sc->buf = ngx_create_temp_buf(c->pool, NGX_SSL_BUFSIZE); | |
351 if (sc->buf == NULL) { | |
352 return NGX_ERROR; | |
353 } | |
354 } | |
355 | 348 |
356 sc->connection = SSL_new(ssl->ctx); | 349 sc->connection = SSL_new(ssl->ctx); |
357 | 350 |
358 if (sc->connection == NULL) { | 351 if (sc->connection == NULL) { |
359 ngx_ssl_error(NGX_LOG_ALERT, c->log, 0, "SSL_new() failed"); | 352 ngx_ssl_error(NGX_LOG_ALERT, c->log, 0, "SSL_new() failed"); |
802 | 795 |
803 if (limit == 0 || limit > (off_t) (NGX_MAX_UINT32_VALUE - ngx_pagesize)) { | 796 if (limit == 0 || limit > (off_t) (NGX_MAX_UINT32_VALUE - ngx_pagesize)) { |
804 limit = NGX_MAX_UINT32_VALUE - ngx_pagesize; | 797 limit = NGX_MAX_UINT32_VALUE - ngx_pagesize; |
805 } | 798 } |
806 | 799 |
807 | |
808 buf = c->ssl->buf; | 800 buf = c->ssl->buf; |
801 | |
802 if (buf == NULL) { | |
803 buf = ngx_create_temp_buf(c->pool, NGX_SSL_BUFSIZE); | |
804 if (buf == NULL) { | |
805 return NGX_CHAIN_ERROR; | |
806 } | |
807 | |
808 c->ssl->buf = buf; | |
809 } | |
810 | |
811 if (buf->start == NULL) { | |
812 buf->start = ngx_palloc(c->pool, NGX_SSL_BUFSIZE); | |
813 if (buf->start == NULL) { | |
814 return NGX_CHAIN_ERROR; | |
815 } | |
816 | |
817 buf->pos = buf->start; | |
818 buf->last = buf->start; | |
819 buf->end = buf->start + NGX_SSL_BUFSIZE; | |
820 } | |
821 | |
809 send = 0; | 822 send = 0; |
810 flush = (in == NULL) ? 1 : 0; | 823 flush = (in == NULL) ? 1 : 0; |
811 | 824 |
812 for ( ;; ) { | 825 for ( ;; ) { |
813 | 826 |
975 ngx_connection_t *c; | 988 ngx_connection_t *c; |
976 | 989 |
977 c = rev->data; | 990 c = rev->data; |
978 | 991 |
979 c->write->handler(c->write); | 992 c->write->handler(c->write); |
993 } | |
994 | |
995 | |
996 void | |
997 ngx_ssl_free_buffer(ngx_connection_t *c) | |
998 { | |
999 if (ngx_pfree(c->pool, c->ssl->buf->start) == NGX_OK) { | |
1000 c->ssl->buf->start = NULL; | |
1001 } | |
980 } | 1002 } |
981 | 1003 |
982 | 1004 |
983 ngx_int_t | 1005 ngx_int_t |
984 ngx_ssl_shutdown(ngx_connection_t *c) | 1006 ngx_ssl_shutdown(ngx_connection_t *c) |