nxt_controller.c (189:3806ffda59cb) nxt_controller.c (193:c1ae75b4e17c)
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Valentin V. Bartenev
5 * Copyright (C) NGINX, Inc.
6 */
7
8#include <nxt_main.h>

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

771 }
772
773 nxt_controller_current_request = req;
774
775 return NXT_OK;
776}
777
778
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Valentin V. Bartenev
5 * Copyright (C) NGINX, Inc.
6 */
7
8#include <nxt_main.h>

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

771 }
772
773 nxt_controller_current_request = req;
774
775 return NXT_OK;
776}
777
778
779void
780nxt_port_controller_data_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg)
779static void
780nxt_controller_conf_handler(nxt_task_t *task, nxt_port_recv_msg_t *msg,
781 void *data)
781{
782 size_t size;
783 nxt_buf_t *b;
784 nxt_controller_request_t *req;
785 nxt_controller_response_t resp;
786
787 b = msg->buf;
788 size = b->mem.free - b->mem.pos;
789
782{
783 size_t size;
784 nxt_buf_t *b;
785 nxt_controller_request_t *req;
786 nxt_controller_response_t resp;
787
788 b = msg->buf;
789 size = b->mem.free - b->mem.pos;
790
790 nxt_debug(task, "contoller data: %*s ...", size, b->mem.pos);
791 nxt_debug(task, "controller conf ready: %*s ...", size, b->mem.pos);
791
792 nxt_memzero(&resp, sizeof(nxt_controller_response_t));
793
794 req = nxt_controller_current_request;
795 nxt_controller_current_request = NULL;
796
792
793 nxt_memzero(&resp, sizeof(nxt_controller_response_t));
794
795 req = nxt_controller_current_request;
796 nxt_controller_current_request = NULL;
797
797 if (size == 2 && nxt_memcmp(b->mem.pos, "OK", 2) == 0) {
798
798 if (msg->port_msg.type == NXT_PORT_MSG_RPC_READY) {
799 nxt_mp_destroy(nxt_controller_conf.pool);
800
801 nxt_controller_conf = req->conf;
802
803 nxt_str_set(&resp.status_line, "200 OK");
804 nxt_str_set(&resp.json, "{ \"success\": \"Reconfiguration done.\" }");
805
806 } else {

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

843 } nxt_queue_loop;
844}
845
846
847static nxt_int_t
848nxt_controller_conf_pass(nxt_task_t *task, nxt_conf_value_t *conf)
849{
850 size_t size;
799 nxt_mp_destroy(nxt_controller_conf.pool);
800
801 nxt_controller_conf = req->conf;
802
803 nxt_str_set(&resp.status_line, "200 OK");
804 nxt_str_set(&resp.json, "{ \"success\": \"Reconfiguration done.\" }");
805
806 } else {

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

843 } nxt_queue_loop;
844}
845
846
847static nxt_int_t
848nxt_controller_conf_pass(nxt_task_t *task, nxt_conf_value_t *conf)
849{
850 size_t size;
851 uint32_t stream;
852 nxt_int_t rc;
851 nxt_buf_t *b;
853 nxt_buf_t *b;
852 nxt_port_t *port;
854 nxt_port_t *router_port, *controller_port;
853 nxt_runtime_t *rt;
854
855 rt = task->thread->runtime;
856
855 nxt_runtime_t *rt;
856
857 rt = task->thread->runtime;
858
857 port = rt->port_by_type[NXT_PROCESS_ROUTER];
859 router_port = rt->port_by_type[NXT_PROCESS_ROUTER];
860 controller_port = rt->port_by_type[NXT_PROCESS_CONTROLLER];
858
859 size = nxt_conf_json_length(conf, NULL);
860
861
862 size = nxt_conf_json_length(conf, NULL);
863
861 b = nxt_port_mmap_get_buf(task, port, size);
864 b = nxt_port_mmap_get_buf(task, router_port, size);
862
863 b->mem.free = nxt_conf_json_print(b->mem.free, conf, NULL);
864
865
866 b->mem.free = nxt_conf_json_print(b->mem.free, conf, NULL);
867
865 return nxt_port_socket_write(task, port, NXT_PORT_MSG_DATA_LAST, -1, 0,
866 0, b);
868 stream = nxt_port_rpc_register_handler(task, controller_port,
869 nxt_controller_conf_handler,
870 nxt_controller_conf_handler,
871 router_port->pid, NULL);
872
873 rc = nxt_port_socket_write(task, router_port, NXT_PORT_MSG_DATA_LAST, -1,
874 stream, controller_port->id, b);
875
876 if (nxt_slow_path(rc != NXT_OK)) {
877 nxt_port_rpc_cancel(task, controller_port, stream);
878 }
879
880 return rc;
867}
868
869
870
871static void
872nxt_controller_response(nxt_task_t *task, nxt_controller_request_t *req,
873 nxt_controller_response_t *resp)
874{

--- 71 unchanged lines hidden ---
881}
882
883
884
885static void
886nxt_controller_response(nxt_task_t *task, nxt_controller_request_t *req,
887 nxt_controller_response_t *resp)
888{

--- 71 unchanged lines hidden ---