Mercurial > hg > nginx
comparison src/event/ngx_event_openssl.c @ 8956:eaf356a35f5d quic
Merged with the default branch.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Wed, 29 Dec 2021 15:17:26 +0300 |
parents | 5c86189a1c1b b002ad258f1d |
children | 7c2adf237091 |
comparison
equal
deleted
inserted
replaced
8955:32daba3aabb2 | 8956:eaf356a35f5d |
---|---|
2940 static ssize_t | 2940 static ssize_t |
2941 ngx_ssl_sendfile(ngx_connection_t *c, ngx_buf_t *file, size_t size) | 2941 ngx_ssl_sendfile(ngx_connection_t *c, ngx_buf_t *file, size_t size) |
2942 { | 2942 { |
2943 #ifdef BIO_get_ktls_send | 2943 #ifdef BIO_get_ktls_send |
2944 | 2944 |
2945 int sslerr; | 2945 int sslerr, flags; |
2946 ssize_t n; | 2946 ssize_t n; |
2947 ngx_err_t err; | 2947 ngx_err_t err; |
2948 | 2948 |
2949 ngx_ssl_clear_error(c->log); | 2949 ngx_ssl_clear_error(c->log); |
2950 | 2950 |
2952 "SSL to sendfile: @%O %uz", | 2952 "SSL to sendfile: @%O %uz", |
2953 file->file_pos, size); | 2953 file->file_pos, size); |
2954 | 2954 |
2955 ngx_set_errno(0); | 2955 ngx_set_errno(0); |
2956 | 2956 |
2957 #if (NGX_HAVE_SENDFILE_NODISKIO) | |
2958 | |
2959 flags = (c->busy_count <= 2) ? SF_NODISKIO : 0; | |
2960 | |
2961 if (file->file->directio) { | |
2962 flags |= SF_NOCACHE; | |
2963 } | |
2964 | |
2965 #else | |
2966 flags = 0; | |
2967 #endif | |
2968 | |
2957 n = SSL_sendfile(c->ssl->connection, file->file->fd, file->file_pos, | 2969 n = SSL_sendfile(c->ssl->connection, file->file->fd, file->file_pos, |
2958 size, 0); | 2970 size, flags); |
2959 | 2971 |
2960 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_sendfile: %d", n); | 2972 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, "SSL_sendfile: %d", n); |
2961 | 2973 |
2962 if (n > 0) { | 2974 if (n > 0) { |
2963 | 2975 |
2971 return NGX_ERROR; | 2983 return NGX_ERROR; |
2972 } | 2984 } |
2973 | 2985 |
2974 ngx_post_event(c->read, &ngx_posted_events); | 2986 ngx_post_event(c->read, &ngx_posted_events); |
2975 } | 2987 } |
2988 | |
2989 #if (NGX_HAVE_SENDFILE_NODISKIO) | |
2990 c->busy_count = 0; | |
2991 #endif | |
2976 | 2992 |
2977 c->sent += n; | 2993 c->sent += n; |
2978 | 2994 |
2979 return n; | 2995 return n; |
2980 } | 2996 } |
3035 return NGX_ERROR; | 3051 return NGX_ERROR; |
3036 } | 3052 } |
3037 | 3053 |
3038 ngx_post_event(c->read, &ngx_posted_events); | 3054 ngx_post_event(c->read, &ngx_posted_events); |
3039 } | 3055 } |
3056 | |
3057 #if (NGX_HAVE_SENDFILE_NODISKIO) | |
3058 | |
3059 if (ngx_errno == EBUSY) { | |
3060 c->busy_count++; | |
3061 | |
3062 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, | |
3063 "SSL_sendfile() busy, count:%d", c->busy_count); | |
3064 | |
3065 if (c->write->posted) { | |
3066 ngx_delete_posted_event(c->write); | |
3067 } | |
3068 | |
3069 ngx_post_event(c->write, &ngx_posted_next_events); | |
3070 } | |
3071 | |
3072 #endif | |
3040 | 3073 |
3041 c->write->ready = 0; | 3074 c->write->ready = 0; |
3042 return NGX_AGAIN; | 3075 return NGX_AGAIN; |
3043 } | 3076 } |
3044 | 3077 |