Latest update - 7671

This commit is contained in:
2020-06-28 19:20:30 +09:00
parent d3a0c6f60b
commit f1c30863fd
9 changed files with 128 additions and 27 deletions
+20 -21
View File
@@ -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);
} }
+1
View File
@@ -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
View File
@@ -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) {
+1
View File
@@ -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;
+40 -3
View File
@@ -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);
+45
View File
@@ -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
+5 -1
View File
@@ -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)
+13
View File
@@ -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)
{ {
+1
View File
@@ -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)