# HG changeset patch # User Igor Sysoev # Date 1069396249 0 # Node ID 2357fa41738a0d2b5263c034db6859118465721c # Parent dd66383796a5ef001e5699001c22bfbb39d892c2 nginx-0.0.1-2003-11-21-09:30:49 import diff --git a/auto/configure b/auto/configure --- a/auto/configure +++ b/auto/configure @@ -1,8 +1,28 @@ CC=cc -CPP='cc -E' +CC_STRONG="$CC -Wall -Werror" +CPP="$CC -E" + +NGX_AUTO_CONFIG_H=ngx_auto_config.h + +echo > $NGX_AUTO_CONFIG_H + + +CC_WARN=$CC_STRONG -echo > ngx_auto_config.h +NGX_FMT_NAME=OFF_FMT +NGX_TYPE="off_t"; . auto/types/sizeof +NGX_FORMATS="%ld %lld %qd"; . auto/fmt/fmt + +NGX_FMT_NAME=TIME_FMT +NGX_TYPE="time_t"; . auto/types/sizeof +NGX_FORMATS="%d %ld %lld %qd"; . auto/fmt/fmt + + +CC_WARN=$CC + +exit + NGX_TYPE="long"; . auto/types/sizeof; NGX_MAX_LONG=$NGX_MAX_SIZE NGX_FORMATS="l"; . auto/fmt/fmt @@ -11,6 +31,15 @@ NGX_FORMATS="l"; . auto/fmt/fmt NGX_TYPE="long long"; . auto/types/sizeof; NGX_MAX_LONG_LONG=$NGX_MAX_SIZE NGX_FORMATS="ll q"; . auto/fmt/fmt + +CC_WARN=$CC_STRONG + +NGX_TYPE="off_t"; . auto/types/sizeof +NGX_FORMATS="l ll q"; . auto/fmt/fmt + + +CC_WARN=$CC + #NGX_TYPE="__int64_t"; . auto/types/typedef; NGX_TIME_T_FMT=$NGX_FMT #NGX_TYPE="time_t"; . auto/types/typedef; NGX_TIME_T_FMT=$NGX_FMT @@ -18,8 +47,6 @@ NGX_FORMATS="ll q"; . auto/fmt/fmt #exit -. auto/types/time_t - . auto/types/uint64_t . auto/types/uintptr_t diff --git a/auto/fmt/fmt b/auto/fmt/fmt --- a/auto/fmt/fmt +++ b/auto/fmt/fmt @@ -1,21 +1,24 @@ -echo "Checking for printf() $NGX_TYPE format" +echo "Checking for $NGX_TYPE printf() format" NGX_FMT=NO for FMT in $NGX_FORMATS do - echo "int main() {" > autotest.c - echo "printf(\"%${FMT}u\", (unsigned $NGX_TYPE) -1);" >> autotest.c + echo "#include " > autotest.c + echo "#include " >> autotest.c + echo "#include " >> autotest.c + echo "int main() {" >> autotest.c + echo "printf(\"${FMT}\", ($NGX_TYPE) $NGX_MAX_SIZE);" >> autotest.c echo "return 0; }" >> autotest.c - eval "${CC} -o autotest autotest.c > /dev/null 2>&1" + eval "${CC_WARN} -o autotest autotest.c > /dev/null 2>&1" - if [ -x ./autotest -a "`./autotest`" = $NGX_MAX_SIZE ]; then - echo " + \"%${FMT}\" used" - NGX_FMT=$FMT - else - echo " + \"%${FMT}\" is not appropriate" + if [ -x ./autotest ]; then + if [ "`./autotest`" = $NGX_MAX_SIZE ]; then + echo " + \"${FMT}\" used" + NGX_FMT=$FMT + fi fi rm autotest* @@ -23,6 +26,8 @@ do if [ $NGX_FMT != NO ]; then break fi + + echo " + \"${FMT}\" is not appropriate" done @@ -30,3 +35,9 @@ if [ $NGX_FMT = NO ]; then echo "printf() $NGX_TYPE format not found" exit 1 fi + + +echo "#ifndef $NGX_FMT_NAME" >> $NGX_AUTO_CONFIG_H +echo "#define $NGX_FMT_NAME \"$NGX_FMT\"" >> $NGX_AUTO_CONFIG_H +echo "#endif" >> $NGX_AUTO_CONFIG_H +echo >> $NGX_AUTO_CONFIG_H diff --git a/auto/types/sizeof b/auto/types/sizeof --- a/auto/types/sizeof +++ b/auto/types/sizeof @@ -3,7 +3,8 @@ echo "Checking for $NGX_TYPE size" BYTES= -echo "int main() {" > autotest.c +echo "#include " > autotest.c +echo "int main() {" >> autotest.c echo "printf(\"%d\", sizeof($NGX_TYPE));" >> autotest.c echo "return 0; }" >> autotest.c @@ -18,11 +19,11 @@ rm autotest* case $BYTES in 4) - NGX_MAX_SIZE=4294967295 + NGX_MAX_SIZE=2147483647 ;; 8) - NGX_MAX_SIZE=18446744073709551615 + NGX_MAX_SIZE=9223372036854775807 ;; *) diff --git a/src/core/nginx.c b/src/core/nginx.c --- a/src/core/nginx.c +++ b/src/core/nginx.c @@ -230,7 +230,7 @@ ngx_log_debug(log, "REOPEN: %d:%d:%s" _ cycle = ngx_init_cycle(cycle, cycle->log); if (cycle == NULL) { - cycle = (ngx_cycle_t*) ngx_cycle; + cycle = (ngx_cycle_t *) ngx_cycle; continue; } diff --git a/src/core/ngx_alloc.c b/src/core/ngx_alloc.c --- a/src/core/ngx_alloc.c +++ b/src/core/ngx_alloc.c @@ -5,10 +5,9 @@ void *ngx_alloc(size_t size, ngx_log_t *log) { - void *p; + void *p; - p = malloc(size); - if (p == NULL) { + if (!(p = malloc(size))) { ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, "malloc() %d bytes failed", size); } @@ -23,7 +22,7 @@ void *ngx_alloc(size_t size, ngx_log_t * void *ngx_calloc(size_t size, ngx_log_t *log) { - void *p; + void *p; p = ngx_alloc(size, log); if (p) { @@ -36,9 +35,11 @@ void *ngx_calloc(size_t size, ngx_log_t ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log) { - ngx_pool_t *p; + ngx_pool_t *p; - ngx_test_null(p, ngx_alloc(size, log), NULL); + if (!(p = ngx_alloc(size, log))) { + return NULL; + } p->last = (char *) p + sizeof(ngx_pool_t); p->end = (char *) p + size; @@ -115,7 +116,10 @@ void *ngx_palloc(ngx_pool_t *pool, size_ /* alloc a new pool block */ - ngx_test_null(n, ngx_create_pool(p->end - (char *) p, p->log), NULL); + if (!(n = ngx_create_pool((size_t) (p->end - (char *) p), p->log))) { + return NULL; + } + p->next = n; m = n->last; n->last += size; @@ -143,11 +147,16 @@ void *ngx_palloc(ngx_pool_t *pool, size_ } if (large == NULL) { - ngx_test_null(large, ngx_palloc(pool, sizeof(ngx_pool_large_t)), NULL); + if (!(large = ngx_palloc(pool, sizeof(ngx_pool_large_t)))) { + return NULL; + } + large->next = NULL; } - ngx_test_null(p, ngx_alloc(size, pool->log), NULL); + if (!(p = ngx_alloc(size, pool->log))) { + return NULL; + } if (pool->large == NULL) { pool->large = large; diff --git a/src/core/ngx_conf_file.c b/src/core/ngx_conf_file.c --- a/src/core/ngx_conf_file.c +++ b/src/core/ngx_conf_file.c @@ -315,12 +315,12 @@ ngx_log_debug(cf->log, "TOKEN START"); } if (h->pos - start) { - ngx_memcpy(h->start, start, h->pos - start); + ngx_memcpy(h->start, start, (size_t) (h->pos - start)); } n = ngx_read_file(&cf->conf_file->file, h->start + (h->pos - start), - h->end - (h->start + (h->pos - start)), + (size_t) (h->end - (h->start + (h->pos - start))), cf->conf_file->file.offset); if (n == NGX_ERROR) { @@ -462,7 +462,8 @@ ngx_log_debug(cf->log, "%d:%d:%d:%d:%d ' if (found) { ngx_test_null(word, ngx_push_array(cf->args), NGX_ERROR); ngx_test_null(word->data, - ngx_palloc(cf->pool, h->pos - start + 1), + ngx_palloc(cf->pool, + (size_t) (h->pos - start + 1)), NGX_ERROR); for (dst = word->data, src = start, len = 0; diff --git a/src/core/ngx_connection.h b/src/core/ngx_connection.h --- a/src/core/ngx_connection.h +++ b/src/core/ngx_connection.h @@ -28,8 +28,8 @@ typedef struct { ngx_log_t *log; int backlog; - int pool_size; - int post_accept_buffer_size; /* should be here because + size_t pool_size; + size_t post_accept_buffer_size; /* should be here because of the AcceptEx() preread */ time_t post_accept_timeout; /* should be here because of the deferred accept */ diff --git a/src/core/ngx_file.c b/src/core/ngx_file.c --- a/src/core/ngx_file.c +++ b/src/core/ngx_file.c @@ -105,7 +105,8 @@ ngx_log_debug(file->log, "temp fd: %d" _ void ngx_create_hashed_filename(ngx_file_t *file, ngx_path_t *path) { - int i, name, pos, level; + int i, name, pos; + size_t level; name = file->name.len; pos = path->name.len + 1; @@ -192,7 +193,7 @@ char *ngx_conf_set_path_slot(ngx_conf_t { char *p = conf; - int i, n; + int i, n, level; ngx_str_t *value; ngx_path_t *path, **pp; @@ -219,12 +220,12 @@ char *ngx_conf_set_path_slot(ngx_conf_t path->len = 0; for (i = 0, n = 2; n < cf->args->nelts; i++, n++) { - path->level[i] = ngx_atoi(value[n].data, value[n].len); - if (path->level[i] == NGX_ERROR || path->level[i] == 0) { + level = ngx_atoi(value[n].data, value[n].len); + if (level == NGX_ERROR || level == 0) { return "invalid value"; } - path->len += path->level[i] + 1; + path->len += path->level[i] + level + 1; } while (i < 3) { diff --git a/src/core/ngx_file.h b/src/core/ngx_file.h --- a/src/core/ngx_file.h +++ b/src/core/ngx_file.h @@ -27,8 +27,8 @@ struct ngx_file_s { struct ngx_path_s { ngx_str_t name; - int len; - int level[3]; + u_int len; + u_int level[3]; ngx_gc_handler_pt gc_handler; }; diff --git a/src/core/ngx_garbage_collector.c b/src/core/ngx_garbage_collector.c --- a/src/core/ngx_garbage_collector.c +++ b/src/core/ngx_garbage_collector.c @@ -70,8 +70,9 @@ void stub_init(ngx_cycle_t *cycle) static int ngx_collect_garbage(ngx_gc_t *ctx, ngx_str_t *dname, int level) { - int rc, len; + int rc; char *last; + size_t len; ngx_err_t err; ngx_str_t fname, buf; ngx_dir_t dir; diff --git a/src/core/ngx_hunk.c b/src/core/ngx_hunk.c --- a/src/core/ngx_hunk.c +++ b/src/core/ngx_hunk.c @@ -3,7 +3,7 @@ #include -ngx_hunk_t *ngx_create_temp_hunk(ngx_pool_t *pool, int size) +ngx_hunk_t *ngx_create_temp_hunk(ngx_pool_t *pool, size_t size) { ngx_hunk_t *h; diff --git a/src/core/ngx_hunk.h b/src/core/ngx_hunk.h --- a/src/core/ngx_hunk.h +++ b/src/core/ngx_hunk.h @@ -124,7 +124,7 @@ typedef struct { (size_t) (h->file_last - h->file_pos)) -ngx_hunk_t *ngx_create_temp_hunk(ngx_pool_t *pool, int size); +ngx_hunk_t *ngx_create_temp_hunk(ngx_pool_t *pool, size_t size); #define ngx_alloc_hunk(pool) ngx_palloc(pool, sizeof(ngx_hunk_t)) #define ngx_calloc_hunk(pool) ngx_pcalloc(pool, sizeof(ngx_hunk_t)) diff --git a/src/core/ngx_output_chain.c b/src/core/ngx_output_chain.c --- a/src/core/ngx_output_chain.c +++ b/src/core/ngx_output_chain.c @@ -10,14 +10,13 @@ ngx_inline static int ngx_output_chain_need_to_copy(ngx_output_chain_ctx_t *ctx, ngx_hunk_t *hunk); static int ngx_output_chain_copy_hunk(ngx_hunk_t *dst, ngx_hunk_t *src, - int sendfile); + u_int sendfile); int ngx_output_chain(ngx_output_chain_ctx_t *ctx, ngx_chain_t *in) { int rc, last; - size_t hsize; - ssize_t size; + size_t size, hsize; ngx_chain_t *cl, *out, **last_out; /* @@ -191,13 +190,14 @@ ngx_inline static int ngx_output_chain_n static int ngx_output_chain_copy_hunk(ngx_hunk_t *dst, ngx_hunk_t *src, - int sendfile) + u_int sendfile) { - ssize_t n, size; + size_t size; + ssize_t n; size = ngx_hunk_size(src); - if (size > (dst->end - dst->pos)) { + if (size > (size_t) (dst->end - dst->pos)) { size = dst->end - dst->pos; } @@ -233,7 +233,7 @@ ngx_log_debug(src->file->log, "READ: %qd } #endif - if (n != size) { + if ((size_t) n != size) { ngx_log_error(NGX_LOG_ALERT, src->file->log, 0, ngx_read_file_n " reads only %d of %d from file", n, size); diff --git a/src/core/ngx_parse.c b/src/core/ngx_parse.c --- a/src/core/ngx_parse.c +++ b/src/core/ngx_parse.c @@ -5,8 +5,9 @@ int ngx_parse_size(ngx_str_t *line) { - int len, scale, size; - char last; + int scale, size; + char last; + size_t len; len = line->len; last = line->data[len - 1]; @@ -41,8 +42,9 @@ int ngx_parse_size(ngx_str_t *line) int ngx_parse_time(ngx_str_t *line, int sec) { - int value, total, len, scale; + int value, total, scale; u_int max, i; + size_t len; char *start, last; enum { st_start = 0, diff --git a/src/event/modules/ngx_devpoll_module.c b/src/event/modules/ngx_devpoll_module.c --- a/src/event/modules/ngx_devpoll_module.c +++ b/src/event/modules/ngx_devpoll_module.c @@ -101,7 +101,7 @@ ngx_module_t ngx_devpoll_module = { static int ngx_devpoll_init(ngx_cycle_t *cycle) { - int n; + size_t n; ngx_devpoll_conf_t *dpcf; dpcf = ngx_event_get_conf(cycle->conf_ctx, ngx_devpoll_module); @@ -122,7 +122,7 @@ ngx_log_debug(cycle->log, "EV: %d" _ dpc if (max_changes < dpcf->changes) { if (nchanges) { n = nchanges * sizeof(struct pollfd); - if (write(dp, change_list, n) != n) { + if ((size_t) write(dp, change_list, n) != n) { ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, "write(/dev/poll) failed"); return NGX_ERROR; @@ -271,7 +271,7 @@ static int ngx_devpoll_del_event(ngx_eve static int ngx_devpoll_set_event(ngx_event_t *ev, int event, u_int flags) { - int n; + size_t n; ngx_connection_t *c; c = ev->data; @@ -286,7 +286,7 @@ static int ngx_devpoll_set_event(ngx_eve "/dev/pool change list is filled up"); n = nchanges * sizeof(struct pollfd); - if (write(dp, change_list, n) != n) { + if ((size_t) write(dp, change_list, n) != n) { ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_errno, "write(/dev/poll) failed"); return NGX_ERROR; @@ -306,7 +306,7 @@ static int ngx_devpoll_set_event(ngx_eve if (flags & NGX_CLOSE_EVENT) { n = nchanges * sizeof(struct pollfd); - if (write(dp, change_list, n) != n) { + if ((size_t) write(dp, change_list, n) != n) { ngx_log_error(NGX_LOG_ALERT, ev->log, ngx_errno, "write(/dev/poll) failed"); return NGX_ERROR; @@ -321,7 +321,8 @@ static int ngx_devpoll_set_event(ngx_eve int ngx_devpoll_process_events(ngx_log_t *log) { - int events, n, i, j; + int events, i, j; + size_t n; ngx_msec_t timer; ngx_err_t err; ngx_cycle_t **cycle; @@ -337,7 +338,7 @@ int ngx_devpoll_process_events(ngx_log_t delta = tv.tv_sec * 1000 + tv.tv_usec / 1000; } else { - timer = INFTIM; + timer = (ngx_msec_t) INFTIM; delta = 0; } @@ -347,7 +348,7 @@ int ngx_devpoll_process_events(ngx_log_t if (nchanges) { n = nchanges * sizeof(struct pollfd); - if (write(dp, change_list, n) != n) { + if ((size_t) write(dp, change_list, n) != n) { ngx_log_error(NGX_LOG_ALERT, log, ngx_errno, "write(/dev/poll) failed"); return NGX_ERROR; diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c --- a/src/event/modules/ngx_kqueue_module.c +++ b/src/event/modules/ngx_kqueue_module.c @@ -11,8 +11,8 @@ typedef struct { - u_int changes; - u_int events; + int changes; + int events; } ngx_kqueue_conf_t; @@ -30,7 +30,7 @@ static char *ngx_kqueue_init_conf(ngx_cy int ngx_kqueue = -1; static struct kevent *change_list, *event_list; -static u_int max_changes, nchanges, nevents; +static int max_changes, nchanges, nevents; static ngx_str_t kqueue_name = ngx_string("kqueue"); @@ -196,8 +196,9 @@ static int ngx_kqueue_add_event(ngx_even ev->oneshot = (flags & NGX_ONESHOT_EVENT) ? 1 : 0; if (nchanges > 0 - && ev->index < nchanges - && (void *) ((uintptr_t) change_list[ev->index].udata & ~1) == ev) + && ev->index < (u_int) nchanges + && ((uintptr_t) change_list[ev->index].udata & (uintptr_t) ~1) + == (uintptr_t) ev) { c = ev->data; ngx_log_error(NGX_LOG_ALERT, ev->log, 0, @@ -206,7 +207,7 @@ static int ngx_kqueue_add_event(ngx_even return NGX_ERROR; } - return ngx_kqueue_set_event(ev, event, EV_ADD | flags); + return ngx_kqueue_set_event(ev, event, EV_ADD|flags); } @@ -217,8 +218,9 @@ static int ngx_kqueue_del_event(ngx_even ev->active = 0; if (nchanges > 0 - && ev->index < nchanges - && (void *) ((uintptr_t) change_list[ev->index].udata & ~1) == ev) + && ev->index < (u_int) nchanges + && ((uintptr_t) change_list[ev->index].udata & (uintptr_t) ~1) + == (uintptr_t) ev) { #if (NGX_DEBUG_EVENT) ngx_connection_t *c = (ngx_connection_t *) ev->data; @@ -228,7 +230,7 @@ static int ngx_kqueue_del_event(ngx_even /* if the event is still not passed to a kernel we will not pass it */ - if (ev->index < --nchanges) { + if (ev->index < (u_int) --nchanges) { e = (ngx_event_t *) change_list[nchanges].udata; change_list[ev->index] = change_list[nchanges]; e->index = ev->index; @@ -247,7 +249,8 @@ static int ngx_kqueue_del_event(ngx_even return NGX_OK; } - return ngx_kqueue_set_event(ev, event, EV_DELETE); + return ngx_kqueue_set_event(ev, event, + flags & NGX_DISABLE_EVENT ? EV_DISABLE : EV_DELETE); } @@ -420,7 +423,7 @@ static int ngx_kqueue_process_events(ngx case EVFILT_WRITE: instance = (uintptr_t) ev & 1; - ev = (void *) ((uintptr_t) ev & ~1); + ev = (ngx_event_t *) ((uintptr_t) ev & (uintptr_t) ~1); /* * it's a stale event from a file descriptor @@ -486,8 +489,8 @@ static char *ngx_kqueue_init_conf(ngx_cy { ngx_kqueue_conf_t *kcf = conf; - ngx_conf_init_unsigned_value(kcf->changes, 512); - ngx_conf_init_unsigned_value(kcf->events, 512); + ngx_conf_init_value(kcf->changes, 512); + ngx_conf_init_value(kcf->events, 512); return NGX_CONF_OK; } diff --git a/src/event/modules/ngx_poll_module.c b/src/event/modules/ngx_poll_module.c --- a/src/event/modules/ngx_poll_module.c +++ b/src/event/modules/ngx_poll_module.c @@ -17,7 +17,7 @@ static int ngx_poll_process_events(ngx_l static struct pollfd *event_list; -static u_int nevents; +static int nevents; static ngx_event_t **event_index; static ngx_event_t **ready_index; @@ -203,7 +203,7 @@ static int ngx_poll_del_event(ngx_event_ #endif if (e == NULL || e->index == NGX_INVALID_INDEX) { - if (ev->index < --nevents) { + if (ev->index < (u_int) --nevents) { event_list[ev->index] = event_list[nevents]; event_index[ev->index] = event_index[nevents]; event_index[ev->index]->index = ev->index; @@ -222,8 +222,7 @@ static int ngx_poll_del_event(ngx_event_ static int ngx_poll_process_events(ngx_log_t *log) { - int ready, found, j; - u_int nready, i; + int i, j, ready, nready, found; ngx_msec_t timer; ngx_err_t err; ngx_cycle_t **cycle; @@ -239,7 +238,7 @@ static int ngx_poll_process_events(ngx_l delta = tv.tv_sec * 1000 + tv.tv_usec / 1000; } else { - timer = INFTIM; + timer = (ngx_msec_t) INFTIM; delta = 0; } @@ -252,7 +251,7 @@ static int ngx_poll_process_events(ngx_l ngx_log_debug(log, "poll timer: %d" _ timer); #endif - ready = poll(event_list, nevents, timer); + ready = poll(event_list, (u_int) nevents, (int) timer); if (ready == -1) { err = ngx_errno; diff --git a/src/event/modules/ngx_select_module.c b/src/event/modules/ngx_select_module.c --- a/src/event/modules/ngx_select_module.c +++ b/src/event/modules/ngx_select_module.c @@ -30,7 +30,7 @@ static int max_write; static int max_fd; #endif -static u_int nevents; +static int nevents; static ngx_event_t **event_index; static ngx_event_t **ready_index; @@ -233,7 +233,7 @@ static int ngx_select_del_event(ngx_even #endif - if (ev->index < --nevents) { + if (ev->index < (u_int) --nevents) { event_index[ev->index] = event_index[nevents]; event_index[ev->index]->index = ev->index; } @@ -247,8 +247,7 @@ static int ngx_select_del_event(ngx_even static int ngx_select_process_events(ngx_log_t *log) { - int ready, found; - u_int i, nready; + int i, ready, nready,found; ngx_err_t err; ngx_msec_t timer; ngx_event_t *ev; diff --git a/src/event/ngx_event.h b/src/event/ngx_event.h --- a/src/event/ngx_event.h +++ b/src/event/ngx_event.h @@ -6,7 +6,7 @@ #include -#define NGX_INVALID_INDEX 0x80000000 +#define NGX_INVALID_INDEX 0xd0d0d0d0 #if (HAVE_IOCP) @@ -28,7 +28,7 @@ struct ngx_event_s { void *context; char *action; - unsigned int index; + u_int index; /* queue in mutex(), aio_read(), aio_write() */ ngx_event_t *prev; @@ -230,8 +230,9 @@ extern ngx_event_actions_t ngx_event_a #define NGX_CLOSE_EVENT 1 -/* this flag has meaning only for kqueue */ +/* these flags have a meaning only for kqueue */ #define NGX_LOWAT_EVENT 0 +#define NGX_DISABLE_EVENT 0 #if (HAVE_KQUEUE) @@ -256,6 +257,9 @@ extern ngx_event_actions_t ngx_event_a #define NGX_ONESHOT_EVENT EV_ONESHOT #define NGX_CLEAR_EVENT EV_CLEAR +#undef NGX_DISABLE_EVENT +#define NGX_DISABLE_EVENT EV_DISABLE + #elif (HAVE_POLL) @@ -362,7 +366,7 @@ int ngx_event_post_acceptex(ngx_listenin -ngx_inline static int ngx_handle_read_event(ngx_event_t *rev, int flags) +ngx_inline static int ngx_handle_read_event(ngx_event_t *rev, u_int flags) { if (ngx_event_flags & NGX_USE_CLEAR_EVENT) { @@ -432,7 +436,7 @@ ngx_inline static int ngx_handle_level_r } -ngx_inline static int ngx_handle_write_event(ngx_event_t *wev, int flags) +ngx_inline static int ngx_handle_write_event(ngx_event_t *wev, u_int flags) { if (ngx_event_flags & NGX_USE_CLEAR_EVENT) { diff --git a/src/event/ngx_event_connect.c b/src/event/ngx_event_connect.c --- a/src/event/ngx_event_connect.c +++ b/src/event/ngx_event_connect.c @@ -9,7 +9,8 @@ int ngx_event_connect_peer(ngx_peer_connection_t *pc) { - int rc, instance, event; + int rc, instance; + u_int event; time_t now; ngx_err_t err; ngx_peer_t *peer; diff --git a/src/event/ngx_event_pipe.c b/src/event/ngx_event_pipe.c --- a/src/event/ngx_event_pipe.c +++ b/src/event/ngx_event_pipe.c @@ -19,7 +19,7 @@ static int ngx_event_pipe_drain_chains(n int ngx_event_pipe(ngx_event_pipe_t *p, int do_write) { - int flags; + u_int flags; ngx_event_t *rev, *wev; for ( ;; ) { diff --git a/src/http/modules/proxy/ngx_http_proxy_parse.c b/src/http/modules/proxy/ngx_http_proxy_parse.c --- a/src/http/modules/proxy/ngx_http_proxy_parse.c +++ b/src/http/modules/proxy/ngx_http_proxy_parse.c @@ -185,6 +185,10 @@ int ngx_http_proxy_parse_status_line(ngx return NGX_HTTP_PROXY_PARSE_NO_HEADER; } break; + + /* suppress warning */ + case sw_done: + break; } } diff --git a/src/http/modules/proxy/ngx_http_proxy_upstream.c b/src/http/modules/proxy/ngx_http_proxy_upstream.c --- a/src/http/modules/proxy/ngx_http_proxy_upstream.c +++ b/src/http/modules/proxy/ngx_http_proxy_upstream.c @@ -936,6 +936,14 @@ static void ngx_http_proxy_send_response p->header_sent = 1; + if (p->cache && p->cache->ctx.file.fd != NGX_INVALID_FILE) { + if (ngx_close_file(p->cache->ctx.file.fd) == NGX_FILE_ERROR) { + ngx_log_error(NGX_LOG_ALERT, r->connection->log, ngx_errno, + ngx_close_file_n " \"%s\" failed", + p->cache->ctx.file.name.data); + } + } + if (p->cachable) { header = (ngx_http_cache_header_t *) p->header_in->start; diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -662,7 +662,7 @@ static char *ngx_server_block(ngx_conf_t return rv; } - ngx_qsort(cscf->locations.elts, cscf->locations.nelts, + ngx_qsort(cscf->locations.elts, (size_t) cscf->locations.nelts, sizeof(void *), ngx_cmp_locations); return rv; diff --git a/src/http/ngx_http_parse.c b/src/http/ngx_http_parse.c --- a/src/http/ngx_http_parse.c +++ b/src/http/ngx_http_parse.c @@ -392,6 +392,10 @@ int ngx_http_parse_request_line(ngx_http return NGX_HTTP_PARSE_INVALID_REQUEST; } break; + + /* suppress warning */ + case sw_done: + break; } } @@ -595,6 +599,11 @@ int ngx_http_parse_header_line(ngx_http_ return NGX_HTTP_PARSE_INVALID_HEADER; } break; + + /* suppress warning */ + case sw_done: + case sw_header_done: + break; } } diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c --- a/src/http/ngx_http_request.c +++ b/src/http/ngx_http_request.c @@ -1116,10 +1116,20 @@ static void ngx_http_set_keepalive(ngx_h wev = c->write; wev->event_handler = ngx_http_empty_handler; - if ((ngx_event_flags & NGX_USE_LEVEL_EVENT) && wev->active) { - if (ngx_del_event(wev, NGX_WRITE_EVENT, 0) == NGX_ERROR) { - ngx_http_close_connection(c); - return; + if (wev->active) { + if (ngx_event_flags & NGX_HAVE_KQUEUE_EVENT) { + if (ngx_del_event(wev, NGX_WRITE_EVENT, NGX_DISABLE_EVENT) + == NGX_ERROR) + { + ngx_http_close_connection(c); + return; + } + + } else if (ngx_event_flags & NGX_USE_LEVEL_EVENT) { + if (ngx_del_event(wev, NGX_WRITE_EVENT, 0) == NGX_ERROR) { + ngx_http_close_connection(c); + return; + } } } @@ -1218,11 +1228,20 @@ static void ngx_http_set_lingering_close wev = c->write; wev->event_handler = ngx_http_empty_handler; - if ((ngx_event_flags & NGX_USE_LEVEL_EVENT) && wev->active) { - if (ngx_del_event(wev, NGX_WRITE_EVENT, 0) == NGX_ERROR) { - ngx_http_close_request(r, 0); - ngx_http_close_connection(c); - return; + if (wev->active) { + if (ngx_event_flags & NGX_HAVE_KQUEUE_EVENT) { + if (ngx_del_event(wev, NGX_WRITE_EVENT, NGX_DISABLE_EVENT) + == NGX_ERROR) + { + ngx_http_close_connection(c); + return; + } + + } else if (ngx_event_flags & NGX_USE_LEVEL_EVENT) { + if (ngx_del_event(wev, NGX_WRITE_EVENT, 0) == NGX_ERROR) { + ngx_http_close_connection(c); + return; + } } } diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c --- a/src/os/unix/ngx_files.c +++ b/src/os/unix/ngx_files.c @@ -118,7 +118,8 @@ ssize_t ngx_write_chain_to_file(ngx_file if (cl->next == NULL) { return ngx_write_file(file, cl->hunk->pos, - cl->hunk->last - cl->hunk->pos, offset); + (size_t) (cl->hunk->last - cl->hunk->pos), + offset); } prev = NULL; diff --git a/src/os/unix/ngx_files.h b/src/os/unix/ngx_files.h --- a/src/os/unix/ngx_files.h +++ b/src/os/unix/ngx_files.h @@ -82,7 +82,7 @@ int ngx_open_dir(ngx_str_t *name, ngx_di #define ngx_read_dir_n "readdir()" -#define ngx_create_dir(name) mkdir(name, 0700) +#define ngx_create_dir(name) mkdir(name, (mode_t) 0700) #define ngx_create_dir_n "mkdir()" diff --git a/src/os/unix/ngx_freebsd_config.h b/src/os/unix/ngx_freebsd_config.h --- a/src/os/unix/ngx_freebsd_config.h +++ b/src/os/unix/ngx_freebsd_config.h @@ -31,13 +31,19 @@ /* TODO: autoconf */ #if (i386) +#if 0 #define OFF_FMT "%lld" +#endif + #define SIZE_FMT "%d" #define SIZEX_FMT "%x" #else /* amd64, alpha, sparc64, ia64 */ +#if 0 #define OFF_FMT "%ld" +#endif + #define SIZE_FMT "%ld" #define SIZEX_FMT "%lx" diff --git a/src/os/unix/ngx_freebsd_sendfile_chain.c b/src/os/unix/ngx_freebsd_sendfile_chain.c --- a/src/os/unix/ngx_freebsd_sendfile_chain.c +++ b/src/os/unix/ngx_freebsd_sendfile_chain.c @@ -25,7 +25,7 @@ ngx_chain_t *ngx_freebsd_sendfile_chain( int rc, eintr, eagain; char *prev; off_t sent, fprev; - ssize_t hsize, fsize, size; + size_t hsize, fsize, size; struct iovec *iov; struct sf_hdtr hdtr; ngx_err_t err;