]> git.kaiwu.me - nginx.git/commitdiff
nginx-0.0.3-2004-04-14-21:44:28 import
authorIgor Sysoev <igor@sysoev.ru>
Wed, 14 Apr 2004 17:44:28 +0000 (17:44 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Wed, 14 Apr 2004 17:44:28 +0000 (17:44 +0000)
20 files changed:
auto/cc
auto/options
src/event/modules/ngx_epoll_module.c
src/event/modules/ngx_kqueue_module.c
src/event/modules/ngx_poll_module.c
src/event/modules/ngx_select_module.c
src/event/ngx_event_accept.c
src/event/ngx_event_posted.c
src/event/ngx_event_timer.c
src/event/ngx_event_timer.h
src/http/modules/ngx_http_gzip_filter.c
src/http/modules/proxy/ngx_http_proxy_handler.c
src/http/modules/proxy/ngx_http_proxy_handler.h
src/http/modules/proxy/ngx_http_proxy_header.c
src/http/modules/proxy/ngx_http_proxy_upstream.c
src/http/ngx_http_headers.c
src/http/ngx_http_request.h
src/os/unix/ngx_process_cycle.c
src/os/unix/ngx_time.h
src/os/win32/ngx_time.h

diff --git a/auto/cc b/auto/cc
index da158773f2a76f4e291ec2298a21437c4be5a935..b089529a95e3c6571138ee874beb04d6209df99e 100644 (file)
--- a/auto/cc
+++ b/auto/cc
@@ -1,4 +1,6 @@
 
+CFLAGS="$CFLAGS $CC_OPT"
+
 case $CC in
 
     *gcc*)
index eac59d5814a60b4feb262e629c56f792eb6f71f2..b4ca3a759117977a6390f1aacead5baedcde2260 100644 (file)
@@ -6,6 +6,7 @@ CPP=
 OBJS=objs
 
 DEBUG=NO
+CC_OPT=
 CPU=NO
 
 TEST_BUILD_DEVPOLL=NO
@@ -72,6 +73,7 @@ do
 
         --with-cc=*)                     CC="$value"                ;;
         --with-cpp=*)                    CPP="$value"               ;;
+        --with-cc-opt=*)                 CC_OPT="$value"            ;;
         --with-cpu-opt=*)                CPU="$value"               ;;
         --with-debug)                    DEBUG=YES                  ;;
 
index 4b76f86cfabd54170f55422ea6702b25846443c1..cad7ed9b72a7205e3ffc7436e6e7d416def1c959 100644 (file)
@@ -356,7 +356,11 @@ int ngx_epoll_process_events(ngx_cycle_t *cycle)
     timer = ngx_event_find_timer();
     ngx_old_elapsed_msec = ngx_elapsed_msec;
 
-    if (timer == 0) {
+    if (timer == -1) {
+        timer = 0;
+        expire = 1;
+
+    } else if (timer == 0) {
         timer = (ngx_msec_t) -1;
         expire = 0;
 
@@ -369,7 +373,9 @@ int ngx_epoll_process_events(ngx_cycle_t *cycle)
             return NGX_ERROR;
         }
 
-        if (ngx_accept_mutex_held == 0 && timer > ngx_accept_mutex_delay) {
+        if (ngx_accept_mutex_held == 0
+            && (timer == -1 || timer > ngx_accept_mutex_delay))
+        {
             timer = ngx_accept_mutex_delay;
             expire = 0;
         }
index 454d7dbb5b1e7f9294a06b9ff6c9b7ef1096c55c..bf37bf5b4b9be9c4a1d1a35e045843d6561564f4 100644 (file)
@@ -383,7 +383,12 @@ static ngx_int_t ngx_kqueue_process_events(ngx_cycle_t *cycle)
         }
     }
 
-    if (timer) {
+    if (timer == -1) {
+        ts.tv_sec = 0;
+        ts.tv_nsec = 0;
+        tp = &ts;
+
+    } else if (timer) {
         ts.tv_sec = timer / 1000;
         ts.tv_nsec = (timer % 1000) * 1000000;
         tp = &ts;
index dd98eca25cbb6d34bca5de773eaee4b9e8a983e5..ffe59d49f4f7575a1a7a7c8284fc842a0dabf895 100644 (file)
@@ -125,6 +125,8 @@ static int ngx_poll_add_event(ngx_event_t *ev, int event, u_int flags)
 
     c = ev->data;
 
+    ev->active = 1;
+
     if (ev->index != NGX_INVALID_INDEX) {
         ngx_log_error(NGX_LOG_ALERT, ev->log, 0,
                       "poll event fd:%d ev:%d is already set", c->fd, event);
@@ -163,7 +165,6 @@ static int ngx_poll_add_event(ngx_event_t *ev, int event, u_int flags)
         ev->index = e->index;
     }
 
-    ev->active = 1;
     ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1 : 0;
 
     return NGX_OK;
@@ -278,7 +279,11 @@ int ngx_poll_process_events(ngx_cycle_t *cycle)
     } else {
         timer = ngx_event_find_timer();
 
-        if (timer == 0) {
+        if (timer == -1) {
+            timer = 0;
+            expire = 1;
+
+        } else if (timer == 0) {
             timer = (ngx_msec_t) INFTIM;
             expire = 0;
 
@@ -302,7 +307,9 @@ int ngx_poll_process_events(ngx_cycle_t *cycle)
             return NGX_ERROR;
         }
 
-        if (ngx_accept_mutex_held == 0 && timer > ngx_accept_mutex_delay) {
+        if (ngx_accept_mutex_held == 0 
+            && (timer == (ngx_msec_t) INFTIM || timer > ngx_accept_mutex_delay))
+        {
             timer = ngx_accept_mutex_delay;
             expire = 0;
         }
@@ -348,8 +355,11 @@ int ngx_poll_process_events(ngx_cycle_t *cycle)
         }
     }
 
-    if (timer == 0 && ready == 0) {
+    if ((ngx_event_flags & NGX_OVERFLOW_EVENT) && timer == 0 && ready == 0) {
+
         /* the overflowed rt signals queue has been drained */
+
+        ngx_accept_mutex_unlock();
         return NGX_OK;
     }
 
index 596ee6a35fb0e7364b2127c8bd4dc9d26f418f5a..0f3848d4e6aec5d157f8cf891ae6816207436069 100644 (file)
@@ -263,33 +263,25 @@ static int ngx_select_process_events(ngx_cycle_t *cycle)
     static ngx_epoch_msec_t   deltas = 0;
 #endif
 
-    work_read_fd_set = master_read_fd_set;
-    work_write_fd_set = master_write_fd_set;
-
     timer = ngx_event_find_timer();
     ngx_old_elapsed_msec = ngx_elapsed_msec;
 
-    if (timer) {
-        tv.tv_sec = timer / 1000;
-        tv.tv_usec = (timer % 1000) * 1000;
-        tp = &tv;
-        expire = 1;
+    expire = 1;
 
-    } else {
-        tp = NULL;
-        expire = 0;
-    }
+#if !(WIN32)
 
-#if (NGX_DEBUG)
-    for (i = 0; i < nevents; i++) {
-        ev = event_index[i];
-        c = ev->data;
-        ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                       "select event: fd:%d wr:%d", c->fd,ev->write);
-    }
-#endif
+    if (ngx_accept_mutex) {
+        if (ngx_trylock_accept_mutex(cycle) == NGX_ERROR) {
+            return NGX_ERROR;
+        }
 
-#if !(WIN32)
+        if (ngx_accept_mutex_held == 0
+            && (timer == 0 || timer > ngx_accept_mutex_delay))
+        {
+            timer = ngx_accept_mutex_delay;
+            expire = 0;
+        }
+    }
 
     if (max_fd == -1) {
         for (i = 0; i < nevents; i++) {
@@ -303,22 +295,41 @@ static int ngx_select_process_events(ngx_cycle_t *cycle)
                        "change max_fd: %d", max_fd);
     }
 
-    if (ngx_accept_mutex) {
-        if (ngx_trylock_accept_mutex(cycle) == NGX_ERROR) {
-            return NGX_ERROR;
-        }
+#endif
 
-        if (ngx_accept_mutex_held == 0 && timer > ngx_accept_mutex_delay) {
-            timer = ngx_accept_mutex_delay;
-            expire = 0;
-        }
+#if (NGX_DEBUG)
+    for (i = 0; i < nevents; i++) {
+        ev = event_index[i];
+        c = ev->data;
+        ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+                       "select event: fd:%d wr:%d", c->fd, ev->write);
     }
-
 #endif
 
+    if (timer == -1) {
+        tv.tv_sec = 0;
+        tv.tv_usec = 0;
+        tp = &tv;
+
+    } else if (timer) {
+        tv.tv_sec = timer / 1000;
+        tv.tv_usec = (timer % 1000) * 1000;
+        tp = &tv;
+
+    } else {
+        tp = NULL;
+        expire = 0;
+    }
+
     ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
                    "select timer: %d", timer);
 
+    work_read_fd_set = master_read_fd_set;
+    work_write_fd_set = master_write_fd_set;
+
+    ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
+                   "select read fd_set: %08X", *(int *) &work_read_fd_set);
+
 #if (WIN32)
     ready = select(0, &work_read_fd_set, &work_write_fd_set, NULL, tp);
 #else
@@ -359,6 +370,7 @@ static int ngx_select_process_events(ngx_cycle_t *cycle)
         if (ready == 0) {
             ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
                           "select() returned no events without timeout");
+            ngx_accept_mutex_unlock();
             return NGX_ERROR;
         }
     }
@@ -381,6 +393,7 @@ static int ngx_select_process_events(ngx_cycle_t *cycle)
         if (ready == 0) {
             ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
                           "select() returned no events without timeout");
+            ngx_accept_mutex_unlock();
             return NGX_ERROR;
         }
     }
@@ -397,6 +410,7 @@ static int ngx_select_process_events(ngx_cycle_t *cycle)
         ngx_log_error((err == NGX_EINTR) ? NGX_LOG_INFO : NGX_LOG_ALERT,
                       cycle->log, err, "select() failed");
 #endif
+        ngx_accept_mutex_unlock();
         return NGX_ERROR;
     }
 
index 07fc6a3255cf8eaf6999bea945285b1cd81a0b9d..0d078e449d2e9777fd8da24ff4e0f8b9443330bc 100644 (file)
@@ -402,6 +402,10 @@ ngx_int_t ngx_disable_accept_events(ngx_cycle_t *cycle)
          */
 
         if (ngx_event_flags & NGX_USE_SIGIO_EVENT) {
+            if (!cycle->connections[s[i].fd].read->active) {
+                continue;
+            }
+
             if (ngx_del_conn(&cycle->connections[s[i].fd], NGX_DISABLE_EVENT)
                                                                   == NGX_ERROR)
             {
@@ -409,6 +413,10 @@ ngx_int_t ngx_disable_accept_events(ngx_cycle_t *cycle)
             }
 
         } else {
+            if (!cycle->read_events[s[i].fd].active) {
+                continue;
+            }
+
             if (ngx_del_event(&cycle->read_events[s[i].fd], NGX_READ_EVENT,
                                                NGX_DISABLE_EVENT) == NGX_ERROR)
             {
index 6de723124bdaf21a77c567250638deb4b5aaa8a2..73a73775631e16a60422a551ee46d0f3f30b3b4a 100644 (file)
@@ -25,9 +25,6 @@ void ngx_event_process_posted(ngx_cycle_t *cycle)
             return;
         }
 
-        ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
-                      "posted event handler " PTR_FMT, ev->event_handler);
-
         ngx_posted_events = ev->next;
 
         if (ev->accept) {
index b66241b6667cb3f6214ad2cda7ad116a2d695aae..ab97ee195ebe849c7782fc8c254b03ab353219f4 100644 (file)
@@ -36,6 +36,7 @@ ngx_int_t ngx_event_timer_init(ngx_log_t *log)
 
 ngx_msec_t ngx_event_find_timer(void)
 {
+    ngx_msec_t     timer;
     ngx_rbtree_t  *node;
 
     if (ngx_event_timer_rbtree == &ngx_event_timer_sentinel) {
@@ -51,12 +52,14 @@ ngx_msec_t ngx_event_find_timer(void)
 
     ngx_mutex_unlock(ngx_event_timer_mutex);
 
-    return (ngx_msec_t)
+    timer = (ngx_msec_t)
          (node->key * NGX_TIMER_RESOLUTION -
                ngx_elapsed_msec / NGX_TIMER_RESOLUTION * NGX_TIMER_RESOLUTION);
 #if 0
                          (node->key * NGX_TIMER_RESOLUTION - ngx_elapsed_msec);
 #endif
+
+    return timer > 0 ? timer: -1 ;
 }
 
 
index bf5d155152e6fd72409239cd91058b5288472dba..e0311b61d81774007ce6072afb7d5b93f1dde45e 100644 (file)
 /*
  * 32 bit timer key value resolution
  *
- * 1 msec - 49 days
- * 10 msec - 1 years 4 months
- * 50 msec - 6 years 10 months
- * 100 msec - 13 years 8 months
+ * 1 msec - 24 days
+ * 10 msec - 8 months
+ * 50 msec - 3 years 5 months
+ * 100 msec - 6 years 10 months
  */
 
 #define NGX_TIMER_RESOLUTION  1
index c62a9ea4fff11fae77eb35088fe853b7bfb579a5..2034595d0d32900ffe11a95ad651eb6265f216d0 100644 (file)
@@ -96,10 +96,8 @@ static ngx_conf_enum_t  ngx_http_gzip_http_version[] = {
 
 static ngx_conf_enum_t  ngx_http_gzip_proxied[] = {
     { ngx_string("off"), NGX_HTTP_GZIP_PROXIED_OFF },
-#if 0
     { ngx_string("nocachable"), NGX_HTTP_GZIP_PROXIED_NOCACHABLE },
     { ngx_string("poor_cachable"), NGX_HTTP_GZIP_PROXIED_POOR_CACHABLE },
-#endif
     { ngx_string("on"), NGX_HTTP_GZIP_PROXIED_ON },
     { ngx_null_string, 0 }
 };
@@ -223,6 +221,7 @@ static ngx_http_output_body_filter_pt    ngx_http_next_body_filter;
 
 static int ngx_http_gzip_header_filter(ngx_http_request_t *r)
 {
+    time_t                 date, expires;
     ngx_http_gzip_ctx_t   *ctx;
     ngx_http_gzip_conf_t  *conf;
 
@@ -250,9 +249,67 @@ static int ngx_http_gzip_header_filter(ngx_http_request_t *r)
     }
 
 
-    /* TODO: proxied */
-    if (r->headers_in.via && conf->proxied == NGX_HTTP_GZIP_PROXIED_OFF) {
-        return ngx_http_next_header_filter(r);
+    if (r->headers_in.via && conf->proxied != NGX_HTTP_GZIP_PROXIED_ON) {
+
+        if (conf->proxied == NGX_HTTP_GZIP_PROXIED_OFF) {
+            return ngx_http_next_header_filter(r);
+        }
+
+        if (r->headers_out.expires) {
+            expires = ngx_http_parse_time(r->headers_out.expires->value.data,
+                                          r->headers_out.expires->value.len);
+            if (expires == NGX_ERROR) {
+                return ngx_http_next_header_filter(r);
+            }
+
+            if (r->headers_out.date) {
+                date = ngx_http_parse_time(r->headers_out.date->value.data,
+                                           r->headers_out.date->value.len);
+                if (date == NGX_ERROR) {
+                    return ngx_http_next_header_filter(r);
+                }
+
+            } else {
+                date = ngx_cached_time;
+            }
+
+            if (expires >= date) {
+                return ngx_http_next_header_filter(r);
+            }
+
+        } else if (r->headers_out.cache_control) {
+
+            if (conf->proxied == NGX_HTTP_GZIP_PROXIED_NOCACHABLE) {
+                if (ngx_strstr(r->headers_out.cache_control->value.data,
+                               "no-cache") == NULL)
+                {
+                    return ngx_http_next_header_filter(r);
+                }
+
+            } else {  /* NGX_HTTP_GZIP_PROXIED_POOR_CACHABLE */
+
+                /* STUB: should be one cycle for all values */
+
+                if (ngx_strstr(r->headers_out.cache_control->value.data,
+                               "no-cache") == NULL
+                    && ngx_strstr(r->headers_out.cache_control->value.data,
+                                  "private") == NULL
+                    && ngx_strstr(r->headers_out.cache_control->value.data,
+                                  "no-store") == NULL)
+                {
+                    return ngx_http_next_header_filter(r);
+                }
+            }
+
+        } else if (conf->proxied == NGX_HTTP_GZIP_PROXIED_NOCACHABLE) {
+            return ngx_http_next_header_filter(r);
+
+        } else {  /* NGX_HTTP_GZIP_PROXIED_POOR_CACHABLE */
+
+            if (r->headers_out.last_modified || r->headers_out.etag) {
+                return ngx_http_next_header_filter(r);
+            }
+        }
     }
 
 
@@ -533,7 +590,7 @@ static int ngx_http_gzip_body_filter(ngx_http_request_t *r, ngx_chain_t *in)
                     trailer->crc32 = ctx->crc32;
                     trailer->zlen = ctx->zin;
 #else
-                    /* STUB */
+                    /* STUB */ Oops !
 #endif
 
                     ctx->zstream.avail_in = 0;
index 0fd89c139075a2b517c4e2d3cf440110622104b0..d7cbf960843e242907aac8c4161450233034ee01 100644 (file)
@@ -262,6 +262,7 @@ ngx_http_header_t ngx_http_proxy_headers_in[] = {
     { ngx_string("Expires"), offsetof(ngx_http_proxy_headers_in_t, expires) },
     { ngx_string("Cache-Control"),
                         offsetof(ngx_http_proxy_headers_in_t, cache_control) },
+    { ngx_string("ETag"), offsetof(ngx_http_proxy_headers_in_t, etag) },
     { ngx_string("X-Accel-Expires"),
                       offsetof(ngx_http_proxy_headers_in_t, x_accel_expires) },
 
index 853aa761734d81ad40bae217e1b229be75eee5b6..55eee74e95e9b6bef2b59cff807bf9e739575686 100644 (file)
@@ -114,6 +114,7 @@ typedef struct {
 
     ngx_table_elt_t                 *expires;
     ngx_table_elt_t                 *cache_control;
+    ngx_table_elt_t                 *etag;
     ngx_table_elt_t                 *x_accel_expires;
 
     ngx_table_elt_t                 *connection;
index 8c24a065ef1a2bdce4756eebc083b54e37cabc64..cb13034f78cb91c1fb8a13f64274988e12a03079 100644 (file)
@@ -20,6 +20,8 @@ int ngx_http_proxy_copy_header(ngx_http_proxy_ctx_t *p,
     h = headers_in->headers.elts;
     for (i = 0; i < headers_in->headers.nelts; i++) {
 
+        /* ignore some headers */
+
         if (&h[i] == headers_in->connection) {
             continue;
         }
@@ -51,12 +53,18 @@ int ngx_http_proxy_copy_header(ngx_http_proxy_ctx_t *p,
             }
         }
 
+
+        /* "Content-Type" is handled specially */
+
         if (&h[i] == headers_in->content_type) {
             r->headers_out.content_type = &h[i];
             r->headers_out.content_type->key.len = 0;
             continue;
         }
 
+
+        /* copy some header pointers and set up r->headers_out */
+
         if (!(ho = ngx_http_add_header(&r->headers_out, ngx_http_headers_out)))
         {
             return NGX_ERROR;
@@ -64,9 +72,30 @@ int ngx_http_proxy_copy_header(ngx_http_proxy_ctx_t *p,
 
         *ho = h[i];
 
+        if (&h[i] == headers_in->expires) {
+            r->headers_out.expires = ho;
+            continue;
+        }
+
+        if (&h[i] == headers_in->cache_control) {
+            r->headers_out.cache_control = ho;
+            continue;
+        }
+
+        if (&h[i] == headers_in->etag) {
+            r->headers_out.etag = ho;
+            continue;
+        }
+
+        if (&h[i] == headers_in->last_modified) {
+            r->headers_out.last_modified = ho;
+            /* TODO: update r->headers_out.last_modified_time */
+            continue;
+        }
+
         /*
-         * ngx_http_header_filter() does not handle specially
-         * the following headers if they are set:
+         * ngx_http_header_filter() passes the following headers as is
+         * and does not handle them specially if they are set:
          *     r->headers_out.server,
          *     r->headers_out.date,
          *     r->headers_out.content_length
index 41946bfc63791b1d2a458c3a34b0d7eeebfbaf12..60c9e8fca1d161755b061c02c4713d1022540677 100644 (file)
@@ -338,9 +338,7 @@ static void ngx_http_proxy_init_upstream(void *data)
 
     r->connection->read->event_handler = ngx_http_proxy_check_broken_connection;
 
-    if (ngx_event_flags & (NGX_USE_CLEAR_EVENT|NGX_HAVE_KQUEUE_EVENT)) {
-
-        /* kqueue allows to detect when client closes prematurely connection */
+    if (ngx_event_flags & NGX_USE_CLEAR_EVENT) {
 
         r->connection->write->event_handler =
                                         ngx_http_proxy_check_broken_connection;
@@ -627,11 +625,6 @@ static void ngx_http_proxy_connect(ngx_http_proxy_ctx_t *p)
 
     if (rc == NGX_AGAIN) {
         ngx_add_timer(c->write, p->lcf->connect_timeout);
-
-        ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0,
-                       "http proxy connect handler: " PTR_FMT,
-                       c->write->event_handler);
-
         return;
     }
 
index 8c925be21bcce85dded1f757a84fba8e618306b3..fd617b161d64f8737b2986ce56ab5157583c324f 100644 (file)
@@ -53,6 +53,10 @@ ngx_http_header_t  ngx_http_headers_out[] = {
                             offsetof(ngx_http_headers_out_t, last_modified) },
     { ngx_string("Accept-Ranges"),
                             offsetof(ngx_http_headers_out_t, accept_ranges) },
+    { ngx_string("Expires"), offsetof(ngx_http_headers_out_t, expires) },
+    { ngx_string("Cache-Control"),
+                            offsetof(ngx_http_headers_out_t, cache_control) },
+    { ngx_string("ETag"), offsetof(ngx_http_headers_out_t, etag) },
 
     { ngx_null_string, 0 }
 };
index e5ae3e1be4b032bea11e0d81d6fc8fb0c9c25df0..716818fa48f57b96cf21bc70d67fc5cf6bba6f77 100644 (file)
@@ -140,12 +140,14 @@ typedef struct {
     ngx_table_elt_t  *last_modified;
     ngx_table_elt_t  *content_range;
     ngx_table_elt_t  *accept_ranges;
+    ngx_table_elt_t  *expires;
+    ngx_table_elt_t  *cache_control;
+    ngx_table_elt_t  *etag;
 
     ngx_str_t         charset;
     ngx_array_t       ranges;
 
     off_t             content_length_n;
-    u_char           *etag;
     time_t            date_time;
     time_t            last_modified_time;
 } ngx_http_headers_out_t;
index 6ee6dbec6be27d06f4046a4b511db4dc282aaca0..61cf0d54f18aaa83624678077124b31003f30ea3 100644 (file)
@@ -82,13 +82,13 @@ void ngx_master_process_cycle(ngx_cycle_t *cycle, ngx_master_ctx_t *ctx)
 
             /*
              * we have to limit the maximum life time of the worker processes
-             * by 1 month because our millisecond event timer is limited
-             * by 49 days on 32-bit platforms
+             * by 10 days because our millisecond event timer is limited
+             * by 24 days on 32-bit platforms
              */
 
             itv.it_interval.tv_sec = 0;
             itv.it_interval.tv_usec = 0;
-            itv.it_value.tv_sec = 30 * 24 * 60 * 60;
+            itv.it_value.tv_sec = 10 * 24 * 60 * 60;
             itv.it_value.tv_usec = 0;
 
             if (setitimer(ITIMER_REAL, &itv, NULL) == -1) {
index 45e81ea85534815133bc3ce19349e6c48635d443..c84486ed55deacf32c862bf90e5b12e172402af7 100644 (file)
@@ -8,7 +8,7 @@
 
 typedef uint64_t       ngx_epoch_msec_t;
 
-typedef u_int          ngx_msec_t;
+typedef ngx_int_t      ngx_msec_t;
 #define NGX_MAX_MSEC   (ngx_msec_t) -1
 
 typedef struct tm      ngx_tm_t;
index afffe6165edbf3c8862716674375a84dc1cda0ab..bdcf39f5d1753e59e3da01a896353892ed5a7530 100644 (file)
@@ -8,7 +8,7 @@
 
 typedef uint64_t       ngx_epoch_msec_t;
 
-typedef u_int          ngx_msec_t;
+typedef ngx_int_t      ngx_msec_t;
 #define NGX_MAX_MSEC   (ngx_msec_t) -1