Moved ngx_http_parse_time() to core, renamed accordingly.

The function is now called ngx_parse_http_time(), and can be used by
any code to parse HTTP-style date and time.  In particular, it will be
used for OCSP stapling.

For compatibility, a macro to map ngx_http_parse_time() to the new name
provided for a while.
This commit is contained in:
Maxim Dounin 2015-06-11 20:42:31 +03:00
parent dd41bfd47a
commit 9984f3053f
11 changed files with 36 additions and 16 deletions

View File

@ -19,6 +19,7 @@ CORE_DEPS="src/core/nginx.h \
src/core/ngx_queue.h \
src/core/ngx_string.h \
src/core/ngx_parse.h \
src/core/ngx_parse_time.h \
src/core/ngx_inet.h \
src/core/ngx_file.h \
src/core/ngx_crc.h \
@ -53,6 +54,7 @@ CORE_SRCS="src/core/nginx.c \
src/core/ngx_output_chain.c \
src/core/ngx_string.c \
src/core/ngx_parse.c \
src/core/ngx_parse_time.c \
src/core/ngx_inet.c \
src/core/ngx_file.c \
src/core/ngx_crc32.c \
@ -303,7 +305,6 @@ HTTP_SRCS="src/http/ngx_http.c \
src/http/ngx_http_script.c \
src/http/ngx_http_upstream.c \
src/http/ngx_http_upstream_round_robin.c \
src/http/ngx_http_parse_time.c \
src/http/modules/ngx_http_static_module.c \
src/http/modules/ngx_http_index_module.c \
src/http/modules/ngx_http_chunked_filter_module.c \

View File

@ -54,6 +54,7 @@ typedef void (*ngx_connection_handler_pt)(ngx_connection_t *c);
#include <ngx_process.h>
#include <ngx_user.h>
#include <ngx_parse.h>
#include <ngx_parse_time.h>
#include <ngx_log.h>
#include <ngx_alloc.h>
#include <ngx_palloc.h>

View File

@ -7,13 +7,12 @@
#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>
static ngx_uint_t mday[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
time_t
ngx_http_parse_time(u_char *value, size_t len)
ngx_parse_http_time(u_char *value, size_t len)
{
u_char *p, *end;
ngx_int_t month;

22
src/core/ngx_parse_time.h Normal file
View File

@ -0,0 +1,22 @@
/*
* Copyright (C) Igor Sysoev
* Copyright (C) Nginx, Inc.
*/
#ifndef _NGX_PARSE_TIME_H_INCLUDED_
#define _NGX_PARSE_TIME_H_INCLUDED_
#include <ngx_config.h>
#include <ngx_core.h>
time_t ngx_parse_http_time(u_char *value, size_t len);
/* compatibility */
#define ngx_http_parse_time(value, len) ngx_parse_http_time(value, len)
#endif /* _NGX_PARSE_TIME_H_INCLUDED_ */

View File

@ -255,7 +255,7 @@ ngx_http_dav_put_handler(ngx_http_request_t *r)
ext.log = r->connection->log;
if (r->headers_in.date) {
date = ngx_http_parse_time(r->headers_in.date->value.data,
date = ngx_parse_http_time(r->headers_in.date->value.data,
r->headers_in.date->value.len);
if (date != NGX_ERROR) {

View File

@ -498,7 +498,7 @@ ngx_http_set_last_modified(ngx_http_request_t *r, ngx_http_header_val_t *hv,
}
r->headers_out.last_modified_time =
(value->len) ? ngx_http_parse_time(value->data, value->len) : -1;
(value->len) ? ngx_parse_http_time(value->data, value->len) : -1;
return NGX_OK;
}

View File

@ -118,7 +118,7 @@ ngx_http_test_if_unmodified(ngx_http_request_t *r)
return 0;
}
iums = ngx_http_parse_time(r->headers_in.if_unmodified_since->value.data,
iums = ngx_parse_http_time(r->headers_in.if_unmodified_since->value.data,
r->headers_in.if_unmodified_since->value.len);
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
@ -148,7 +148,7 @@ ngx_http_test_if_modified(ngx_http_request_t *r)
return 1;
}
ims = ngx_http_parse_time(r->headers_in.if_modified_since->value.data,
ims = ngx_parse_http_time(r->headers_in.if_modified_since->value.data,
r->headers_in.if_modified_since->value.len);
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,

View File

@ -204,7 +204,7 @@ ngx_http_range_header_filter(ngx_http_request_t *r)
goto next_filter;
}
if_range_time = ngx_http_parse_time(if_range->data, if_range->len);
if_range_time = ngx_parse_http_time(if_range->data, if_range->len);
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http ir:%d lm:%d",

View File

@ -148,9 +148,6 @@ ngx_int_t ngx_http_filter_finalize_request(ngx_http_request_t *r,
void ngx_http_clean_header(ngx_http_request_t *r);
time_t ngx_http_parse_time(u_char *value, size_t len);
ngx_int_t ngx_http_discard_request_body(ngx_http_request_t *r);
void ngx_http_discarded_request_body_handler(ngx_http_request_t *r);
void ngx_http_block_reading(ngx_http_request_t *r);

View File

@ -2195,7 +2195,7 @@ ngx_http_gzip_ok(ngx_http_request_t *r)
return NGX_DECLINED;
}
expires = ngx_http_parse_time(e->value.data, e->value.len);
expires = ngx_parse_http_time(e->value.data, e->value.len);
if (expires == NGX_ERROR) {
return NGX_DECLINED;
}
@ -2203,7 +2203,7 @@ ngx_http_gzip_ok(ngx_http_request_t *r)
d = r->headers_out.date;
if (d) {
date = ngx_http_parse_time(d->value.data, d->value.len);
date = ngx_parse_http_time(d->value.data, d->value.len);
if (date == NGX_ERROR) {
return NGX_DECLINED;
}

View File

@ -3731,7 +3731,7 @@ ngx_http_upstream_store(ngx_http_request_t *r, ngx_http_upstream_t *u)
if (u->headers_in.last_modified) {
lm = ngx_http_parse_time(u->headers_in.last_modified->value.data,
lm = ngx_parse_http_time(u->headers_in.last_modified->value.data,
u->headers_in.last_modified->value.len);
if (lm != NGX_ERROR) {
@ -4128,7 +4128,7 @@ ngx_http_upstream_process_last_modified(ngx_http_request_t *r,
#if (NGX_HTTP_CACHE)
if (u->cacheable) {
u->headers_in.last_modified_time = ngx_http_parse_time(h->value.data,
u->headers_in.last_modified_time = ngx_parse_http_time(h->value.data,
h->value.len);
}
@ -4292,7 +4292,7 @@ ngx_http_upstream_process_expires(ngx_http_request_t *r, ngx_table_elt_t *h,
return NGX_OK;
}
expires = ngx_http_parse_time(h->value.data, h->value.len);
expires = ngx_parse_http_time(h->value.data, h->value.len);
if (expires == NGX_ERROR || expires < ngx_time()) {
u->cacheable = 0;