diff options
Diffstat (limited to 'src')
27 files changed, 154 insertions, 86 deletions
diff --git a/src/core/nginx.c b/src/core/nginx.c index ca056bd18..26db6f8b7 100644 --- a/src/core/nginx.c +++ b/src/core/nginx.c @@ -230,7 +230,7 @@ ngx_log_debug(log, "REOPEN: %d:%d:%s" _ fd _ file[i].fd _ file[i].name.data); 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 index 32aa25c7e..dff05936e 100644 --- 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 *log) 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 *log) 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_t 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_t 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 index 5ea364bce..fd30216f5 100644 --- 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 '%c'" _ 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 index da6f37a01..9312fba60 100644 --- 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 index ee4c653db..4ae537894 100644 --- a/src/core/ngx_file.c +++ b/src/core/ngx_file.c @@ -105,7 +105,8 @@ ngx_log_debug(file->log, "temp fd: %d" _ file->fd); 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 *cf, ngx_command_t *cmd, void *conf) { 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 *cf, ngx_command_t *cmd, void *conf) 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 index b1e5fb855..9042c61d5 100644 --- 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 index e673acd5a..f60fae927 100644 --- 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 index de57a5d02..2785c39d4 100644 --- a/src/core/ngx_hunk.c +++ b/src/core/ngx_hunk.c @@ -3,7 +3,7 @@ #include <ngx_core.h> -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 index 2c6664b60..7dc0f0c85 100644 --- 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 index f196937ef..46deab446 100644 --- 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_need_to_copy(ngx_output_chain_ctx_t *ctx, 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:%qd %X:%X %X:%X" _ } #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 index 213b2f6ec..6a1f54bb2 100644 --- 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 index c8f368406..08aff29e1 100644 --- 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" _ dpcf->events); 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_event_t *ev, int event, u_int flags) 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_event_t *ev, int event, u_int flags) "/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_event_t *ev, int event, u_int flags) 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_event_t *ev, int event, u_int flags) 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 *log) 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 *log) 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 index 259054838..f51886e1e 100644 --- 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_cycle_t *cycle, void *conf); 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_event_t *ev, int event, u_int flags) 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_event_t *ev, int event, u_int flags) 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_event_t *ev, int event, u_int flags) 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_event_t *ev, int event, u_int flags) /* 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_event_t *ev, int event, u_int flags) 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_log_t *log) 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_cycle_t *cycle, void *conf) { 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 index e771e92fe..4bd4177c9 100644 --- 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_log_t *log); 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_t *ev, int event, u_int flags) #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_t *ev, int event, u_int flags) 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_log_t *log) 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_log_t *log) 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 index 9e7a08f94..52c30dda7 100644 --- 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_event_t *ev, int event, u_int flags) #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_event_t *ev, int event, u_int flags) 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 index e539d7f1c..48ef29beb 100644 --- a/src/event/ngx_event.h +++ b/src/event/ngx_event.h @@ -6,7 +6,7 @@ #include <ngx_core.h> -#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_actions; #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_actions; #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_listening_t *ls, int n); -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_read_event(ngx_event_t *rev) } -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 index 1a61ef7fc..7884cd8b6 100644 --- 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 index dddf2cfe1..5696cbce5 100644 --- 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(ngx_event_pipe_t *p); 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 index 1729542d0..a69795850 100644 --- 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_http_proxy_ctx_t *p) 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 index 9d442cd4a..1b1ca4493 100644 --- 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(ngx_http_proxy_ctx_t *p) 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 index e06198ea0..086e57dd4 100644 --- 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 *cf, ngx_command_t *cmd, void *dummy) 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 index fa037ddff..07da10d33 100644 --- 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_request_t *r) 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_request_t *r, ngx_hunk_t *h) 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 index ccaa73f7d..1a6485fa8 100644 --- 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_http_request_t *r) 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(ngx_http_request_t *r) 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 index 651113d91..7563009da 100644 --- 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_t *file, ngx_chain_t *cl, 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 index 09fc856a4..51cba703a 100644 --- 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_dir_t *dir); #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 index 8a2f55e2f..a8014ec60 100644 --- 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 index 71368c7ad..610c7d74b 100644 --- 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(ngx_connection_t *c, ngx_chain_t *in) 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; |