Latest update - 7671
This commit is contained in:
@@ -980,6 +980,7 @@ ngx_ssl_ocsp_validate_next(ngx_connection_t *c)
|
|||||||
if (ocsp->ncert == n - 1 || (ocf->depth == 2 && ocsp->ncert == 1)) {
|
if (ocsp->ncert == n - 1 || (ocf->depth == 2 && ocsp->ncert == 1)) {
|
||||||
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
|
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
|
||||||
"ssl ocsp validated, certs:%ui", ocsp->ncert);
|
"ssl ocsp validated, certs:%ui", ocsp->ncert);
|
||||||
|
rc = NGX_OK;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -988,7 +989,8 @@ ngx_ssl_ocsp_validate_next(ngx_connection_t *c)
|
|||||||
|
|
||||||
ctx = ngx_ssl_ocsp_start(c->log);
|
ctx = ngx_ssl_ocsp_start(c->log);
|
||||||
if (ctx == NULL) {
|
if (ctx == NULL) {
|
||||||
goto failed;
|
rc = NGX_ERROR;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
ocsp->ctx = ctx;
|
ocsp->ctx = ctx;
|
||||||
@@ -1012,8 +1014,9 @@ ngx_ssl_ocsp_validate_next(ngx_connection_t *c)
|
|||||||
ctx->uri = ocf->uri;
|
ctx->uri = ocf->uri;
|
||||||
ctx->port = ocf->port;
|
ctx->port = ocf->port;
|
||||||
|
|
||||||
if (ngx_ssl_ocsp_responder(c, ctx) != NGX_OK) {
|
rc = ngx_ssl_ocsp_responder(c, ctx);
|
||||||
goto failed;
|
if (rc != NGX_OK) {
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->uri.len == 0) {
|
if (ctx->uri.len == 0) {
|
||||||
@@ -1025,7 +1028,7 @@ ngx_ssl_ocsp_validate_next(ngx_connection_t *c)
|
|||||||
rc = ngx_ssl_ocsp_cache_lookup(ctx);
|
rc = ngx_ssl_ocsp_cache_lookup(ctx);
|
||||||
|
|
||||||
if (rc == NGX_ERROR) {
|
if (rc == NGX_ERROR) {
|
||||||
goto failed;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rc == NGX_DECLINED) {
|
if (rc == NGX_DECLINED) {
|
||||||
@@ -1051,12 +1054,12 @@ ngx_ssl_ocsp_validate_next(ngx_connection_t *c)
|
|||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
||||||
ocsp->status = NGX_OK;
|
ocsp->status = rc;
|
||||||
return;
|
|
||||||
|
|
||||||
failed:
|
if (c->ssl->in_ocsp) {
|
||||||
|
c->ssl->handshaked = 1;
|
||||||
ocsp->status = NGX_ERROR;
|
c->ssl->handler(c);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1073,22 +1076,16 @@ ngx_ssl_ocsp_handler(ngx_ssl_ocsp_ctx_t *ctx)
|
|||||||
|
|
||||||
rc = ngx_ssl_ocsp_verify(ctx);
|
rc = ngx_ssl_ocsp_verify(ctx);
|
||||||
if (rc != NGX_OK) {
|
if (rc != NGX_OK) {
|
||||||
ocsp->status = rc;
|
|
||||||
ngx_ssl_ocsp_done(ctx);
|
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = ngx_ssl_ocsp_cache_store(ctx);
|
rc = ngx_ssl_ocsp_cache_store(ctx);
|
||||||
if (rc != NGX_OK) {
|
if (rc != NGX_OK) {
|
||||||
ocsp->status = rc;
|
|
||||||
ngx_ssl_ocsp_done(ctx);
|
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->status != V_OCSP_CERTSTATUS_GOOD) {
|
if (ctx->status != V_OCSP_CERTSTATUS_GOOD) {
|
||||||
ocsp->cert_status = ctx->status;
|
ocsp->cert_status = ctx->status;
|
||||||
ocsp->status = NGX_OK;
|
|
||||||
ngx_ssl_ocsp_done(ctx);
|
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1096,15 +1093,17 @@ ngx_ssl_ocsp_handler(ngx_ssl_ocsp_ctx_t *ctx)
|
|||||||
|
|
||||||
ngx_ssl_ocsp_validate_next(c);
|
ngx_ssl_ocsp_validate_next(c);
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
done:
|
done:
|
||||||
|
|
||||||
if (ocsp->status == NGX_AGAIN || !c->ssl->in_ocsp) {
|
ocsp->status = rc;
|
||||||
return;
|
ngx_ssl_ocsp_done(ctx);
|
||||||
|
|
||||||
|
if (c->ssl->in_ocsp) {
|
||||||
|
c->ssl->handshaked = 1;
|
||||||
|
c->ssl->handler(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
c->ssl->handshaked = 1;
|
|
||||||
|
|
||||||
c->ssl->handler(c);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1141,6 +1141,7 @@ ngx_http_uwsgi_create_request(ngx_http_request_t *r)
|
|||||||
r->upstream->request_bufs = cl;
|
r->upstream->request_bufs = cl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
b->flush = 1;
|
||||||
cl->next = NULL;
|
cl->next = NULL;
|
||||||
|
|
||||||
return NGX_OK;
|
return NGX_OK;
|
||||||
|
|||||||
+2
-2
@@ -1469,14 +1469,14 @@ ngx_http_server_names(ngx_conf_t *cf, ngx_http_core_main_conf_t *cmcf,
|
|||||||
NGX_HASH_WILDCARD_KEY);
|
NGX_HASH_WILDCARD_KEY);
|
||||||
|
|
||||||
if (rc == NGX_ERROR) {
|
if (rc == NGX_ERROR) {
|
||||||
return NGX_ERROR;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rc == NGX_DECLINED) {
|
if (rc == NGX_DECLINED) {
|
||||||
ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
||||||
"invalid server name or wildcard \"%V\" on %V",
|
"invalid server name or wildcard \"%V\" on %V",
|
||||||
&name[n].name, &addr->opt.addr_text);
|
&name[n].name, &addr->opt.addr_text);
|
||||||
return NGX_ERROR;
|
goto failed;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rc == NGX_BUSY) {
|
if (rc == NGX_BUSY) {
|
||||||
|
|||||||
@@ -160,6 +160,7 @@ struct ngx_http_file_cache_s {
|
|||||||
|
|
||||||
ngx_path_t *path;
|
ngx_path_t *path;
|
||||||
|
|
||||||
|
off_t min_free;
|
||||||
off_t max_size;
|
off_t max_size;
|
||||||
size_t bsize;
|
size_t bsize;
|
||||||
|
|
||||||
|
|||||||
@@ -1959,7 +1959,7 @@ ngx_http_file_cache_manager(void *data)
|
|||||||
{
|
{
|
||||||
ngx_http_file_cache_t *cache = data;
|
ngx_http_file_cache_t *cache = data;
|
||||||
|
|
||||||
off_t size;
|
off_t size, free;
|
||||||
time_t wait;
|
time_t wait;
|
||||||
ngx_msec_t elapsed, next;
|
ngx_msec_t elapsed, next;
|
||||||
ngx_uint_t count, watermark;
|
ngx_uint_t count, watermark;
|
||||||
@@ -1988,7 +1988,19 @@ ngx_http_file_cache_manager(void *data)
|
|||||||
size, count, (ngx_int_t) watermark);
|
size, count, (ngx_int_t) watermark);
|
||||||
|
|
||||||
if (size < cache->max_size && count < watermark) {
|
if (size < cache->max_size && count < watermark) {
|
||||||
break;
|
|
||||||
|
if (!cache->min_free) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
free = ngx_fs_available(cache->path->name.data);
|
||||||
|
|
||||||
|
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
|
||||||
|
"http file cache free: %O", free);
|
||||||
|
|
||||||
|
if (free > cache->min_free) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wait = ngx_http_file_cache_forced_expire(cache);
|
wait = ngx_http_file_cache_forced_expire(cache);
|
||||||
@@ -2304,7 +2316,7 @@ ngx_http_file_cache_set_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
{
|
{
|
||||||
char *confp = conf;
|
char *confp = conf;
|
||||||
|
|
||||||
off_t max_size;
|
off_t max_size, min_free;
|
||||||
u_char *last, *p;
|
u_char *last, *p;
|
||||||
time_t inactive;
|
time_t inactive;
|
||||||
ssize_t size;
|
ssize_t size;
|
||||||
@@ -2341,6 +2353,7 @@ ngx_http_file_cache_set_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
name.len = 0;
|
name.len = 0;
|
||||||
size = 0;
|
size = 0;
|
||||||
max_size = NGX_MAX_OFF_T_VALUE;
|
max_size = NGX_MAX_OFF_T_VALUE;
|
||||||
|
min_free = 0;
|
||||||
|
|
||||||
value = cf->args->elts;
|
value = cf->args->elts;
|
||||||
|
|
||||||
@@ -2476,6 +2489,29 @@ ngx_http_file_cache_set_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ngx_strncmp(value[i].data, "min_free=", 9) == 0) {
|
||||||
|
|
||||||
|
#if (NGX_WIN32 || NGX_HAVE_STATFS || NGX_HAVE_STATVFS)
|
||||||
|
|
||||||
|
s.len = value[i].len - 9;
|
||||||
|
s.data = value[i].data + 9;
|
||||||
|
|
||||||
|
min_free = ngx_parse_offset(&s);
|
||||||
|
if (min_free < 0) {
|
||||||
|
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
|
||||||
|
"invalid min_free value \"%V\"", &value[i]);
|
||||||
|
return NGX_CONF_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
|
||||||
|
"min_free is not supported "
|
||||||
|
"on this platform, ignored");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (ngx_strncmp(value[i].data, "loader_files=", 13) == 0) {
|
if (ngx_strncmp(value[i].data, "loader_files=", 13) == 0) {
|
||||||
|
|
||||||
loader_files = ngx_atoi(value[i].data + 13, value[i].len - 13);
|
loader_files = ngx_atoi(value[i].data + 13, value[i].len - 13);
|
||||||
@@ -2607,6 +2643,7 @@ ngx_http_file_cache_set_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
|||||||
|
|
||||||
cache->inactive = inactive;
|
cache->inactive = inactive;
|
||||||
cache->max_size = max_size;
|
cache->max_size = max_size;
|
||||||
|
cache->min_free = min_free;
|
||||||
|
|
||||||
caches = (ngx_array_t *) (confp + cmd->offset);
|
caches = (ngx_array_t *) (confp + cmd->offset);
|
||||||
|
|
||||||
|
|||||||
@@ -875,9 +875,28 @@ ngx_fs_bsize(u_char *name)
|
|||||||
return 512;
|
return 512;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (NGX_LINUX)
|
||||||
|
if ((size_t) fs.f_bsize > ngx_pagesize) {
|
||||||
|
return 512;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return (size_t) fs.f_bsize;
|
return (size_t) fs.f_bsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
off_t
|
||||||
|
ngx_fs_available(u_char *name)
|
||||||
|
{
|
||||||
|
struct statfs fs;
|
||||||
|
|
||||||
|
if (statfs((char *) name, &fs) == -1) {
|
||||||
|
return NGX_MAX_OFF_T_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (off_t) fs.f_bavail * fs.f_bsize;
|
||||||
|
}
|
||||||
|
|
||||||
#elif (NGX_HAVE_STATVFS)
|
#elif (NGX_HAVE_STATVFS)
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
@@ -893,9 +912,28 @@ ngx_fs_bsize(u_char *name)
|
|||||||
return 512;
|
return 512;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (NGX_LINUX)
|
||||||
|
if ((size_t) fs.f_frsize > ngx_pagesize) {
|
||||||
|
return 512;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return (size_t) fs.f_frsize;
|
return (size_t) fs.f_frsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
off_t
|
||||||
|
ngx_fs_available(u_char *name)
|
||||||
|
{
|
||||||
|
struct statvfs fs;
|
||||||
|
|
||||||
|
if (statvfs((char *) name, &fs) == -1) {
|
||||||
|
return NGX_MAX_OFF_T_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (off_t) fs.f_bavail * fs.f_frsize;
|
||||||
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
@@ -904,4 +942,11 @@ ngx_fs_bsize(u_char *name)
|
|||||||
return 512;
|
return 512;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
off_t
|
||||||
|
ngx_fs_available(u_char *name)
|
||||||
|
{
|
||||||
|
return NGX_MAX_OFF_T_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -185,7 +185,10 @@ ngx_int_t ngx_set_file_time(u_char *name, ngx_fd_t fd, time_t s);
|
|||||||
#define ngx_is_exec(sb) (((sb)->st_mode & S_IXUSR) == S_IXUSR)
|
#define ngx_is_exec(sb) (((sb)->st_mode & S_IXUSR) == S_IXUSR)
|
||||||
#define ngx_file_access(sb) ((sb)->st_mode & 0777)
|
#define ngx_file_access(sb) ((sb)->st_mode & 0777)
|
||||||
#define ngx_file_size(sb) (sb)->st_size
|
#define ngx_file_size(sb) (sb)->st_size
|
||||||
#define ngx_file_fs_size(sb) ngx_max((sb)->st_size, (sb)->st_blocks * 512)
|
#define ngx_file_fs_size(sb) \
|
||||||
|
(((sb)->st_blocks * 512 > (sb)->st_size \
|
||||||
|
&& (sb)->st_blocks * 512 < (sb)->st_size + 8 * (sb)->st_blksize) \
|
||||||
|
? (sb)->st_blocks * 512 : (sb)->st_size)
|
||||||
#define ngx_file_mtime(sb) (sb)->st_mtime
|
#define ngx_file_mtime(sb) (sb)->st_mtime
|
||||||
#define ngx_file_uniq(sb) (sb)->st_ino
|
#define ngx_file_uniq(sb) (sb)->st_ino
|
||||||
|
|
||||||
@@ -346,6 +349,7 @@ ngx_int_t ngx_directio_off(ngx_fd_t fd);
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
size_t ngx_fs_bsize(u_char *name);
|
size_t ngx_fs_bsize(u_char *name);
|
||||||
|
off_t ngx_fs_available(u_char *name);
|
||||||
|
|
||||||
|
|
||||||
#if (NGX_HAVE_OPENAT)
|
#if (NGX_HAVE_OPENAT)
|
||||||
|
|||||||
@@ -658,6 +658,19 @@ ngx_fs_bsize(u_char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
off_t
|
||||||
|
ngx_fs_available(u_char *name)
|
||||||
|
{
|
||||||
|
ULARGE_INTEGER navail;
|
||||||
|
|
||||||
|
if (GetDiskFreeSpaceEx((const char *) name, &navail, NULL, NULL) == 0) {
|
||||||
|
return NGX_MAX_OFF_T_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (off_t) navail.QuadPart;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static ngx_int_t
|
static ngx_int_t
|
||||||
ngx_win32_check_filename(u_char *name, u_short *u, size_t len)
|
ngx_win32_check_filename(u_char *name, u_short *u, size_t len)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -259,6 +259,7 @@ ngx_int_t ngx_directio_off(ngx_fd_t fd);
|
|||||||
#define ngx_directio_off_n "ngx_directio_off_n"
|
#define ngx_directio_off_n "ngx_directio_off_n"
|
||||||
|
|
||||||
size_t ngx_fs_bsize(u_char *name);
|
size_t ngx_fs_bsize(u_char *name);
|
||||||
|
off_t ngx_fs_available(u_char *name);
|
||||||
|
|
||||||
|
|
||||||
#define ngx_stdout GetStdHandle(STD_OUTPUT_HANDLE)
|
#define ngx_stdout GetStdHandle(STD_OUTPUT_HANDLE)
|
||||||
|
|||||||
Reference in New Issue
Block a user