diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nodejs/unit-http/unit.cpp | 2 | ||||
-rw-r--r-- | src/nxt_buf_pool.c | 5 | ||||
-rw-r--r-- | src/nxt_event_engine.c | 2 | ||||
-rw-r--r-- | src/nxt_http_route_addr.c | 8 | ||||
-rw-r--r-- | src/nxt_openssl.c | 4 | ||||
-rw-r--r-- | src/nxt_php_sapi.c | 15 | ||||
-rw-r--r-- | src/nxt_router.c | 23 | ||||
-rw-r--r-- | src/nxt_unit.c | 8 | ||||
-rw-r--r-- | src/ruby/nxt_ruby.c | 6 | ||||
-rw-r--r-- | src/ruby/nxt_ruby_stream_io.c | 18 |
10 files changed, 45 insertions, 46 deletions
diff --git a/src/nodejs/unit-http/unit.cpp b/src/nodejs/unit-http/unit.cpp index 1fa73689..64e076c1 100644 --- a/src/nodejs/unit-http/unit.cpp +++ b/src/nodejs/unit-http/unit.cpp @@ -844,7 +844,7 @@ Unit::response_write(napi_env env, napi_callback_info info) res_len = nxt_unit_response_write_nb(req, ptr, have_buf_len, 0); - ret = res_len < 0 ? -res_len : NXT_UNIT_OK; + ret = res_len < 0 ? -res_len : (int) NXT_UNIT_OK; } if (ret != NXT_UNIT_OK) { diff --git a/src/nxt_buf_pool.c b/src/nxt_buf_pool.c index 8259c60a..f2be88a7 100644 --- a/src/nxt_buf_pool.c +++ b/src/nxt_buf_pool.c @@ -172,11 +172,12 @@ nxt_buf_pool_free(nxt_buf_pool_t *bp, nxt_buf_t *b) void nxt_buf_pool_destroy(nxt_buf_pool_t *bp) { - nxt_buf_t *b; + nxt_buf_t *b, *n; bp->destroy = 1; - for (b = bp->free; b != NULL; b = b->next) { + for (b = bp->free; b != NULL; b = n) { + n = b->next; nxt_buf_free(bp->mem_pool, b); } diff --git a/src/nxt_event_engine.c b/src/nxt_event_engine.c index 6f051067..4384d3b1 100644 --- a/src/nxt_event_engine.c +++ b/src/nxt_event_engine.c @@ -156,9 +156,9 @@ signals_fail: #if 0 fibers_fail: +#endif nxt_free(engine); -#endif return NULL; } diff --git a/src/nxt_http_route_addr.c b/src/nxt_http_route_addr.c index 3c7e9c84..6d4955ed 100644 --- a/src/nxt_http_route_addr.c +++ b/src/nxt_http_route_addr.c @@ -18,7 +18,7 @@ nxt_int_t nxt_http_route_addr_pattern_parse(nxt_mp_t *mp, nxt_http_route_addr_pattern_t *pattern, nxt_conf_value_t *cv) { - u_char *delim, *end; + u_char *delim; nxt_int_t ret, cidr_prefix; nxt_str_t addr, port; nxt_http_route_addr_base_t *base; @@ -59,6 +59,7 @@ nxt_http_route_addr_pattern_parse(nxt_mp_t *mp, if (nxt_str_looks_like_ipv6(&addr)) { #if (NXT_INET6) + u_char *end; uint8_t i; nxt_int_t len; nxt_http_route_in6_addr_range_t *inet6; @@ -179,7 +180,10 @@ nxt_http_route_addr_pattern_parse(nxt_mp_t *mp, return NXT_ADDR_PATTERN_FORMAT_ERROR; } - nxt_inet6_addr(&inet6->start, addr.start, addr.length); + ret = nxt_inet6_addr(&inet6->start, addr.start, addr.length); + if (nxt_slow_path(ret != NXT_OK)) { + return NXT_ADDR_PATTERN_FORMAT_ERROR; + } goto parse_port; #endif diff --git a/src/nxt_openssl.c b/src/nxt_openssl.c index 53ed0381..832d1f0d 100644 --- a/src/nxt_openssl.c +++ b/src/nxt_openssl.c @@ -633,10 +633,6 @@ nxt_openssl_conn_io_recvbuf(nxt_conn_t *c, nxt_buf_t *b) c->socket.fd, b->mem.free, size, ret, err); if (ret > 0) { - if ((size_t) ret < size) { - c->socket.read_ready = 0; - } - return ret; } diff --git a/src/nxt_php_sapi.c b/src/nxt_php_sapi.c index 0f6ce686..26bf915f 100644 --- a/src/nxt_php_sapi.c +++ b/src/nxt_php_sapi.c @@ -599,20 +599,27 @@ nxt_php_request_handler(nxt_unit_request_info_t *req) path.start = nxt_unit_sptr_get(&r->path); if (nxt_php_script_filename.start == NULL) { + nxt_str_null(&script_name); + ctx->path_info.start = (u_char *) strstr((char *) path.start, ".php/"); if (ctx->path_info.start != NULL) { ctx->path_info.start += 4; path.length = ctx->path_info.start - path.start; ctx->path_info.length = r->path_length - path.length; - } - if (path.start[path.length - 1] == '/') { + } else if (path.start[path.length - 1] == '/') { script_name = nxt_php_index; } else { - script_name.length = 0; - script_name.start = NULL; + if (nxt_slow_path(path.length < 4 + || nxt_memcmp(path.start + (path.length - 4), + ".php", 4))) + { + nxt_unit_request_done(req, NXT_UNIT_ERROR); + + return; + } } ctx->script_filename.length = nxt_php_root.length + path.length diff --git a/src/nxt_router.c b/src/nxt_router.c index 6a1f3792..3ff048c5 100644 --- a/src/nxt_router.c +++ b/src/nxt_router.c @@ -3750,8 +3750,6 @@ nxt_router_response_error_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg, nxt_router_app_prepare_request(task, req_app_link); } - nxt_request_app_link_use(task, req_app_link, -1); - msg->port_msg.last = 0; return; @@ -4220,28 +4218,23 @@ re_ra_cancelled: if (nxt_router_port_post_select(task, &state) == NXT_OK) { /* * There should be call nxt_request_app_link_inc_use(re_ra), - * but we need to decrement use then. So, let's skip both. + * because of one more link in the queue. + * Corresponding decrement is in nxt_router_app_process_request(). */ + nxt_request_app_link_inc_use(re_ra); + nxt_work_queue_add(&task->thread->engine->fast_work_queue, nxt_router_app_process_request, &task->thread->engine->task, app, re_ra); - - } else { - /* - * This call should be unconditional, but we want to spare - * couple of CPU ticks to postpone the head death of the universe. - */ - - nxt_request_app_link_use(task, re_ra, -1); } } if (req_app_link != NULL) { /* - * Here we do the same trick as described above, - * but without conditions. - * Skip required nxt_request_app_link_inc_use(req_app_link). + * There should be call nxt_request_app_link_inc_use(req_app_link), + * because of one more link in the queue. But one link was + * recently removed from app->requests link. */ nxt_work_queue_add(&task->thread->engine->fast_work_queue, @@ -5205,8 +5198,6 @@ nxt_router_app_timeout(nxt_task_t *task, void *obj, void *data) if (nxt_router_port_post_select(task, &state) == NXT_OK) { nxt_router_app_prepare_request(task, pending_ra); } - - nxt_request_app_link_use(task, pending_ra, -1); } nxt_debug(task, "send quit to app '%V' pid %PI", &app->name, port->pid); diff --git a/src/nxt_unit.c b/src/nxt_unit.c index 95874db3..7c3d945c 100644 --- a/src/nxt_unit.c +++ b/src/nxt_unit.c @@ -23,10 +23,6 @@ #define NXT_UNIT_LOCAL_BUF_SIZE \ (NXT_UNIT_MAX_PLAIN_SIZE + sizeof(nxt_port_msg_t)) -#define NXT_UNIT_MAX_PLAIN_SIZE 1024 -#define NXT_UNIT_LOCAL_BUF_SIZE \ - (NXT_UNIT_MAX_PLAIN_SIZE + sizeof(nxt_port_msg_t)) - typedef struct nxt_unit_impl_s nxt_unit_impl_t; typedef struct nxt_unit_mmap_s nxt_unit_mmap_t; typedef struct nxt_unit_mmaps_s nxt_unit_mmaps_t; @@ -871,7 +867,8 @@ nxt_unit_process_new_port(nxt_unit_ctx_t *ctx, nxt_unit_recv_msg_t *recv_msg) if (nxt_slow_path(ioctl(recv_msg->fd, FIONBIO, &nb) == -1)) { nxt_unit_alert(ctx, "#%"PRIu32": new_port: ioctl(%d, FIONBIO, 0) " - "failed: %s (%d)", recv_msg->fd, strerror(errno), errno); + "failed: %s (%d)", + recv_msg->stream, recv_msg->fd, strerror(errno), errno); return NXT_UNIT_ERROR; } @@ -3206,6 +3203,7 @@ nxt_unit_get_outgoing_buf(nxt_unit_ctx_t *ctx, nxt_unit_process_t *process, mmap_buf->port_id = *port_id; mmap_buf->process = process; mmap_buf->free_ptr = NULL; + mmap_buf->ctx_impl = nxt_container_of(ctx, nxt_unit_ctx_impl_t, ctx); nxt_unit_debug(ctx, "outgoing mmap allocation: (%d,%d,%d)", (int) hdr->id, (int) c, diff --git a/src/ruby/nxt_ruby.c b/src/ruby/nxt_ruby.c index e4b30319..417e2d8d 100644 --- a/src/ruby/nxt_ruby.c +++ b/src/ruby/nxt_ruby.c @@ -52,7 +52,8 @@ static int nxt_ruby_hash_info(VALUE r_key, VALUE r_value, VALUE arg); static int nxt_ruby_hash_add(VALUE r_key, VALUE r_value, VALUE arg); static int nxt_ruby_rack_result_body(VALUE result); static int nxt_ruby_rack_result_body_file_write(VALUE filepath); -static VALUE nxt_ruby_rack_result_body_each(VALUE body); +static VALUE nxt_ruby_rack_result_body_each(VALUE body, VALUE arg, + int argc, const VALUE *argv, VALUE blockarg); static void nxt_ruby_exception_log(nxt_task_t *task, uint32_t level, const char *desc); @@ -813,7 +814,8 @@ nxt_ruby_rack_result_body_file_write(VALUE filepath) static VALUE -nxt_ruby_rack_result_body_each(VALUE body) +nxt_ruby_rack_result_body_each(VALUE body, VALUE arg, int argc, + const VALUE *argv, VALUE blockarg) { int rc; diff --git a/src/ruby/nxt_ruby_stream_io.c b/src/ruby/nxt_ruby_stream_io.c index fcfcf5dd..7e8b3ce1 100644 --- a/src/ruby/nxt_ruby_stream_io.c +++ b/src/ruby/nxt_ruby_stream_io.c @@ -10,15 +10,15 @@ static VALUE nxt_ruby_stream_io_new(VALUE class, VALUE wrap); static VALUE nxt_ruby_stream_io_initialize(int argc, VALUE *argv, VALUE self); -static VALUE nxt_ruby_stream_io_gets(VALUE obj, VALUE args); -static VALUE nxt_ruby_stream_io_each(VALUE obj, VALUE args); +static VALUE nxt_ruby_stream_io_gets(VALUE obj); +static VALUE nxt_ruby_stream_io_each(VALUE obj); static VALUE nxt_ruby_stream_io_read(VALUE obj, VALUE args); -static VALUE nxt_ruby_stream_io_rewind(VALUE obj, VALUE args); +static VALUE nxt_ruby_stream_io_rewind(VALUE obj); static VALUE nxt_ruby_stream_io_puts(VALUE obj, VALUE args); static VALUE nxt_ruby_stream_io_write(VALUE obj, VALUE args); nxt_inline long nxt_ruby_stream_io_s_write(nxt_ruby_run_ctx_t *run_ctx, VALUE val); -static VALUE nxt_ruby_stream_io_flush(VALUE obj, VALUE args); +static VALUE nxt_ruby_stream_io_flush(VALUE obj); VALUE @@ -85,7 +85,7 @@ nxt_ruby_stream_io_initialize(int argc, VALUE *argv, VALUE self) static VALUE -nxt_ruby_stream_io_gets(VALUE obj, VALUE args) +nxt_ruby_stream_io_gets(VALUE obj) { VALUE buf; char *p; @@ -132,7 +132,7 @@ nxt_ruby_stream_io_gets(VALUE obj, VALUE args) static VALUE -nxt_ruby_stream_io_each(VALUE obj, VALUE args) +nxt_ruby_stream_io_each(VALUE obj) { VALUE chunk; @@ -141,7 +141,7 @@ nxt_ruby_stream_io_each(VALUE obj, VALUE args) } for ( ;; ) { - chunk = nxt_ruby_stream_io_gets(obj, Qnil); + chunk = nxt_ruby_stream_io_gets(obj); if (chunk == Qnil) { return Qnil; @@ -203,7 +203,7 @@ nxt_ruby_stream_io_read(VALUE obj, VALUE args) static VALUE -nxt_ruby_stream_io_rewind(VALUE obj, VALUE args) +nxt_ruby_stream_io_rewind(VALUE obj) { return Qnil; } @@ -266,7 +266,7 @@ nxt_ruby_stream_io_s_write(nxt_ruby_run_ctx_t *run_ctx, VALUE val) static VALUE -nxt_ruby_stream_io_flush(VALUE obj, VALUE args) +nxt_ruby_stream_io_flush(VALUE obj) { return Qnil; } |