Mercurial > hg > nginx
comparison src/http/modules/ngx_http_geo_module.c @ 3653:be3f716ba546
test binary gep range base mtime
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 30 Jun 2010 10:02:05 +0000 |
parents | 1eea82e36053 |
children | b56935e34273 |
comparison
equal
deleted
inserted
replaced
3652:1eea82e36053 | 3653:be3f716ba546 |
---|---|
1136 | 1136 |
1137 static ngx_int_t | 1137 static ngx_int_t |
1138 ngx_http_geo_include_binary_base(ngx_conf_t *cf, ngx_http_geo_conf_ctx_t *ctx, | 1138 ngx_http_geo_include_binary_base(ngx_conf_t *cf, ngx_http_geo_conf_ctx_t *ctx, |
1139 ngx_str_t *name) | 1139 ngx_str_t *name) |
1140 { | 1140 { |
1141 u_char *base; | 1141 u_char *base, ch; |
1142 time_t mtime; | |
1142 size_t size, len; | 1143 size_t size, len; |
1143 ssize_t n; | 1144 ssize_t n; |
1144 uint32_t crc32; | 1145 uint32_t crc32; |
1145 ngx_err_t err; | 1146 ngx_err_t err; |
1146 ngx_int_t rc; | 1147 ngx_int_t rc; |
1178 ngx_fd_info_n " \"%s\" failed", name->data); | 1179 ngx_fd_info_n " \"%s\" failed", name->data); |
1179 goto failed; | 1180 goto failed; |
1180 } | 1181 } |
1181 | 1182 |
1182 size = (size_t) ngx_file_size(&fi); | 1183 size = (size_t) ngx_file_size(&fi); |
1184 mtime = ngx_file_mtime(&fi); | |
1185 | |
1186 ch = name->data[name->len - 4]; | |
1187 name->data[name->len - 4] = '\0'; | |
1188 | |
1189 if (ngx_file_info(name->data, &fi) == NGX_FILE_ERROR) { | |
1190 ngx_conf_log_error(NGX_LOG_CRIT, cf, ngx_errno, | |
1191 ngx_file_info_n " \"%s\" failed", name->data); | |
1192 goto failed; | |
1193 } | |
1194 | |
1195 name->data[name->len - 4] = ch; | |
1196 | |
1197 if (mtime < ngx_file_mtime(&fi)) { | |
1198 ngx_conf_log_error(NGX_LOG_WARN, cf, 0, | |
1199 "stale binary geo range base \"%s\"", name->data); | |
1200 goto failed; | |
1201 } | |
1183 | 1202 |
1184 base = ngx_palloc(ctx->pool, size); | 1203 base = ngx_palloc(ctx->pool, size); |
1185 if (base == NULL) { | 1204 if (base == NULL) { |
1186 goto failed; | 1205 goto failed; |
1187 } | 1206 } |