nxt_router.c (425:1da949cf0a34) nxt_router.c (426:4242d6b29dd9)
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Valentin V. Bartenev
5 * Copyright (C) NGINX, Inc.
6 */
7
8#include <nxt_router.h>

--- 644 unchanged lines hidden (view full) ---

653nxt_router_new_port_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
654{
655 nxt_port_new_port_handler(task, msg);
656
657 if (msg->port_msg.stream == 0) {
658 return;
659 }
660
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Valentin V. Bartenev
5 * Copyright (C) NGINX, Inc.
6 */
7
8#include <nxt_router.h>

--- 644 unchanged lines hidden (view full) ---

653nxt_router_new_port_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
654{
655 nxt_port_new_port_handler(task, msg);
656
657 if (msg->port_msg.stream == 0) {
658 return;
659 }
660
661 if (msg->u.new_port == NULL ||
662 msg->u.new_port->type != NXT_PROCESS_WORKER)
661 if (msg->u.new_port == NULL
662 || msg->u.new_port->type != NXT_PROCESS_WORKER)
663 {
664 msg->port_msg.type = _NXT_PORT_MSG_RPC_ERROR;
665 }
666
667 nxt_port_rpc_handler(task, msg);
668}
669
670

--- 2122 unchanged lines hidden (view full) ---

2793
2794 app = port->app;
2795
2796 nxt_thread_mutex_lock(&app->mutex);
2797
2798 port->app_pending_responses -= request_failed + got_response;
2799 port->app_responses += got_response;
2800
663 {
664 msg->port_msg.type = _NXT_PORT_MSG_RPC_ERROR;
665 }
666
667 nxt_port_rpc_handler(task, msg);
668}
669
670

--- 2122 unchanged lines hidden (view full) ---

2793
2794 app = port->app;
2795
2796 nxt_thread_mutex_lock(&app->mutex);
2797
2798 port->app_pending_responses -= request_failed + got_response;
2799 port->app_responses += got_response;
2800
2801 if (app->live != 0 &&
2802 port->pair[1] != -1 &&
2803 (app->max_pending_responses == 0
2801 if (app->live != 0
2802 && port->pair[1] != -1
2803 && (app->max_pending_responses == 0
2804 || port->app_pending_responses < app->max_pending_responses))
2805 {
2806 if (port->app_link.next == NULL) {
2807 if (port->app_pending_responses > 0) {
2808 nxt_queue_insert_tail(&app->ports, &port->app_link);
2809
2810 } else {
2811 nxt_queue_insert_head(&app->ports, &port->app_link);

--- 6 unchanged lines hidden (view full) ---

2818 && nxt_queue_first(&app->ports) != &port->app_link)
2819 {
2820 nxt_queue_remove(&port->app_link);
2821 nxt_queue_insert_head(&app->ports, &port->app_link);
2822 }
2823 }
2824 }
2825
2804 || port->app_pending_responses < app->max_pending_responses))
2805 {
2806 if (port->app_link.next == NULL) {
2807 if (port->app_pending_responses > 0) {
2808 nxt_queue_insert_tail(&app->ports, &port->app_link);
2809
2810 } else {
2811 nxt_queue_insert_head(&app->ports, &port->app_link);

--- 6 unchanged lines hidden (view full) ---

2818 && nxt_queue_first(&app->ports) != &port->app_link)
2819 {
2820 nxt_queue_remove(&port->app_link);
2821 nxt_queue_insert_head(&app->ports, &port->app_link);
2822 }
2823 }
2824 }
2825
2826 if (app->live != 0 &&
2827 !nxt_queue_is_empty(&app->ports) &&
2828 !nxt_queue_is_empty(&app->requests))
2826 if (app->live != 0
2827 && !nxt_queue_is_empty(&app->ports)
2828 && !nxt_queue_is_empty(&app->requests))
2829 {
2830 lnk = nxt_queue_first(&app->requests);
2831 nxt_queue_remove(lnk);
2832 lnk->next = NULL;
2833
2834 ra = nxt_queue_link_data(lnk, nxt_req_app_link_t, link_app_requests);
2835
2836 ra->app_port = nxt_router_app_get_port_unsafe(app);

--- 86 unchanged lines hidden (view full) ---

2923
2924 if (unchain) {
2925 nxt_queue_remove(&port->app_link);
2926 port->app_link.next = NULL;
2927 }
2928
2929 app->workers--;
2930
2829 {
2830 lnk = nxt_queue_first(&app->requests);
2831 nxt_queue_remove(lnk);
2832 lnk->next = NULL;
2833
2834 ra = nxt_queue_link_data(lnk, nxt_req_app_link_t, link_app_requests);
2835
2836 ra->app_port = nxt_router_app_get_port_unsafe(app);

--- 86 unchanged lines hidden (view full) ---

2923
2924 if (unchain) {
2925 nxt_queue_remove(&port->app_link);
2926 port->app_link.next = NULL;
2927 }
2928
2929 app->workers--;
2930
2931 start_worker = app->live != 0 &&
2932 nxt_queue_is_empty(&app->requests) == 0 &&
2933 app->workers + app->pending_workers < app->max_workers;
2931 start_worker = app->live != 0
2932 && nxt_queue_is_empty(&app->requests) == 0
2933 && app->workers + app->pending_workers < app->max_workers;
2934
2935 if (start_worker) {
2936 app->pending_workers++;
2937 }
2938
2939 nxt_thread_mutex_unlock(&app->mutex);
2940
2941 nxt_debug(task, "app '%V' %p port %p close", &app->name, app, port);

--- 696 unchanged lines hidden (view full) ---

3638 NXT_WRITE(&h->host);
3639 NXT_WRITE(&h->cookie);
3640 NXT_WRITE(&h->content_type);
3641 NXT_WRITE(&h->content_length);
3642
3643 RC(nxt_app_msg_write_size(task, wmsg, h->parsed_content_length));
3644 RC(nxt_app_msg_write_size(task, wmsg, r->body.preread_size));
3645
2934
2935 if (start_worker) {
2936 app->pending_workers++;
2937 }
2938
2939 nxt_thread_mutex_unlock(&app->mutex);
2940
2941 nxt_debug(task, "app '%V' %p port %p close", &app->name, app, port);

--- 696 unchanged lines hidden (view full) ---

3638 NXT_WRITE(&h->host);
3639 NXT_WRITE(&h->cookie);
3640 NXT_WRITE(&h->content_type);
3641 NXT_WRITE(&h->content_length);
3642
3643 RC(nxt_app_msg_write_size(task, wmsg, h->parsed_content_length));
3644 RC(nxt_app_msg_write_size(task, wmsg, r->body.preread_size));
3645
3646 method_is_post = h->method.length == 4 &&
3647 h->method.start[0] == 'P' &&
3648 h->method.start[1] == 'O' &&
3649 h->method.start[2] == 'S' &&
3650 h->method.start[3] == 'T';
3646 method_is_post = h->method.length == 4
3647 && h->method.start[0] == 'P'
3648 && h->method.start[1] == 'O'
3649 && h->method.start[2] == 'S'
3650 && h->method.start[3] == 'T';
3651
3652 if (method_is_post) {
3653 for(b = r->body.buf; b != NULL; b = b->next) {
3654 RC(nxt_app_msg_write_raw(task, wmsg, b->mem.pos,
3655 nxt_buf_mem_used_size(&b->mem)));
3656 }
3657 }
3658

--- 302 unchanged lines hidden ---
3651
3652 if (method_is_post) {
3653 for(b = r->body.buf; b != NULL; b = b->next) {
3654 RC(nxt_app_msg_write_raw(task, wmsg, b->mem.pos,
3655 nxt_buf_mem_used_size(&b->mem)));
3656 }
3657 }
3658

--- 302 unchanged lines hidden ---