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 }