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)) {
|
||||
ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0,
|
||||
"ssl ocsp validated, certs:%ui", ocsp->ncert);
|
||||
rc = NGX_OK;
|
||||
goto done;
|
||||
}
|
||||
|
||||
@@ -988,7 +989,8 @@ ngx_ssl_ocsp_validate_next(ngx_connection_t *c)
|
||||
|
||||
ctx = ngx_ssl_ocsp_start(c->log);
|
||||
if (ctx == NULL) {
|
||||
goto failed;
|
||||
rc = NGX_ERROR;
|
||||
goto done;
|
||||
}
|
||||
|
||||
ocsp->ctx = ctx;
|
||||
@@ -1012,8 +1014,9 @@ ngx_ssl_ocsp_validate_next(ngx_connection_t *c)
|
||||
ctx->uri = ocf->uri;
|
||||
ctx->port = ocf->port;
|
||||
|
||||
if (ngx_ssl_ocsp_responder(c, ctx) != NGX_OK) {
|
||||
goto failed;
|
||||
rc = ngx_ssl_ocsp_responder(c, ctx);
|
||||
if (rc != NGX_OK) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
if (rc == NGX_ERROR) {
|
||||
goto failed;
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (rc == NGX_DECLINED) {
|
||||
@@ -1051,12 +1054,12 @@ ngx_ssl_ocsp_validate_next(ngx_connection_t *c)
|
||||
|
||||
done:
|
||||
|
||||
ocsp->status = NGX_OK;
|
||||
return;
|
||||
ocsp->status = rc;
|
||||
|
||||
failed:
|
||||
|
||||
ocsp->status = NGX_ERROR;
|
||||
if (c->ssl->in_ocsp) {
|
||||
c->ssl->handshaked = 1;
|
||||
c->ssl->handler(c);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1073,22 +1076,16 @@ ngx_ssl_ocsp_handler(ngx_ssl_ocsp_ctx_t *ctx)
|
||||
|
||||
rc = ngx_ssl_ocsp_verify(ctx);
|
||||
if (rc != NGX_OK) {
|
||||
ocsp->status = rc;
|
||||
ngx_ssl_ocsp_done(ctx);
|
||||
goto done;
|
||||
}
|
||||
|
||||
rc = ngx_ssl_ocsp_cache_store(ctx);
|
||||
if (rc != NGX_OK) {
|
||||
ocsp->status = rc;
|
||||
ngx_ssl_ocsp_done(ctx);
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (ctx->status != V_OCSP_CERTSTATUS_GOOD) {
|
||||
ocsp->cert_status = ctx->status;
|
||||
ocsp->status = NGX_OK;
|
||||
ngx_ssl_ocsp_done(ctx);
|
||||
goto done;
|
||||
}
|
||||
|
||||
@@ -1096,15 +1093,17 @@ ngx_ssl_ocsp_handler(ngx_ssl_ocsp_ctx_t *ctx)
|
||||
|
||||
ngx_ssl_ocsp_validate_next(c);
|
||||
|
||||
return;
|
||||
|
||||
done:
|
||||
|
||||
if (ocsp->status == NGX_AGAIN || !c->ssl->in_ocsp) {
|
||||
return;
|
||||
}
|
||||
ocsp->status = rc;
|
||||
ngx_ssl_ocsp_done(ctx);
|
||||
|
||||
if (c->ssl->in_ocsp) {
|
||||
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;
|
||||
}
|
||||
|
||||
b->flush = 1;
|
||||
cl->next = NULL;
|
||||
|
||||
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);
|
||||
|
||||
if (rc == NGX_ERROR) {
|
||||
return NGX_ERROR;
|
||||
goto failed;
|
||||
}
|
||||
|
||||
if (rc == NGX_DECLINED) {
|
||||
ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
|
||||
"invalid server name or wildcard \"%V\" on %V",
|
||||
&name[n].name, &addr->opt.addr_text);
|
||||
return NGX_ERROR;
|
||||
goto failed;
|
||||
}
|
||||
|
||||
if (rc == NGX_BUSY) {
|
||||
|
||||
@@ -160,6 +160,7 @@ struct ngx_http_file_cache_s {
|
||||
|
||||
ngx_path_t *path;
|
||||
|
||||
off_t min_free;
|
||||
off_t max_size;
|
||||
size_t bsize;
|
||||
|
||||
|
||||
@@ -1959,7 +1959,7 @@ ngx_http_file_cache_manager(void *data)
|
||||
{
|
||||
ngx_http_file_cache_t *cache = data;
|
||||
|
||||
off_t size;
|
||||
off_t size, free;
|
||||
time_t wait;
|
||||
ngx_msec_t elapsed, next;
|
||||
ngx_uint_t count, watermark;
|
||||
@@ -1988,9 +1988,21 @@ ngx_http_file_cache_manager(void *data)
|
||||
size, count, (ngx_int_t) watermark);
|
||||
|
||||
if (size < cache->max_size && count < watermark) {
|
||||
|
||||
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);
|
||||
|
||||
if (wait > 0) {
|
||||
@@ -2304,7 +2316,7 @@ ngx_http_file_cache_set_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
||||
{
|
||||
char *confp = conf;
|
||||
|
||||
off_t max_size;
|
||||
off_t max_size, min_free;
|
||||
u_char *last, *p;
|
||||
time_t inactive;
|
||||
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;
|
||||
size = 0;
|
||||
max_size = NGX_MAX_OFF_T_VALUE;
|
||||
min_free = 0;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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) {
|
||||
|
||||
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->max_size = max_size;
|
||||
cache->min_free = min_free;
|
||||
|
||||
caches = (ngx_array_t *) (confp + cmd->offset);
|
||||
|
||||
|
||||
@@ -875,9 +875,28 @@ ngx_fs_bsize(u_char *name)
|
||||
return 512;
|
||||
}
|
||||
|
||||
#if (NGX_LINUX)
|
||||
if ((size_t) fs.f_bsize > ngx_pagesize) {
|
||||
return 512;
|
||||
}
|
||||
#endif
|
||||
|
||||
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)
|
||||
|
||||
size_t
|
||||
@@ -893,9 +912,28 @@ ngx_fs_bsize(u_char *name)
|
||||
return 512;
|
||||
}
|
||||
|
||||
#if (NGX_LINUX)
|
||||
if ((size_t) fs.f_frsize > ngx_pagesize) {
|
||||
return 512;
|
||||
}
|
||||
#endif
|
||||
|
||||
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
|
||||
|
||||
size_t
|
||||
@@ -904,4 +942,11 @@ ngx_fs_bsize(u_char *name)
|
||||
return 512;
|
||||
}
|
||||
|
||||
|
||||
off_t
|
||||
ngx_fs_available(u_char *name)
|
||||
{
|
||||
return NGX_MAX_OFF_T_VALUE;
|
||||
}
|
||||
|
||||
#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_file_access(sb) ((sb)->st_mode & 0777)
|
||||
#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_uniq(sb) (sb)->st_ino
|
||||
|
||||
@@ -346,6 +349,7 @@ ngx_int_t ngx_directio_off(ngx_fd_t fd);
|
||||
#endif
|
||||
|
||||
size_t ngx_fs_bsize(u_char *name);
|
||||
off_t ngx_fs_available(u_char *name);
|
||||
|
||||
|
||||
#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
|
||||
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"
|
||||
|
||||
size_t ngx_fs_bsize(u_char *name);
|
||||
off_t ngx_fs_available(u_char *name);
|
||||
|
||||
|
||||
#define ngx_stdout GetStdHandle(STD_OUTPUT_HANDLE)
|
||||
|
||||
Reference in New Issue
Block a user