From: Florin Coras Date: Thu, 4 Apr 2019 15:27:58 +0000 (-0700) Subject: session: fix http server rpc to main X-Git-Tag: v19.04-rc1~47 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F88%2F18688%2F3;p=vpp.git session: fix http server rpc to main Change-Id: I3e3820da5a9de97070bceecd3ea53b5351654319 Signed-off-by: Florin Coras --- diff --git a/src/vnet/session-apps/http_server.c b/src/vnet/session-apps/http_server.c index 11940e361b0..ccbe711c76a 100644 --- a/src/vnet/session-apps/http_server.c +++ b/src/vnet/session-apps/http_server.c @@ -445,7 +445,8 @@ alloc_http_process (http_server_args * args) /* Save the args (pointer) in the node runtime */ save_args = vlib_node_get_runtime_data (vm, n->index); - *save_args = args; + *save_args = clib_mem_alloc (sizeof (*args)); + clib_memcpy_fast (*save_args, args, sizeof (*args)); vlib_start_process (vm, n->runtime_index); } @@ -481,7 +482,7 @@ session_rx_request (http_session_t * hs) static int http_server_rx_callback (session_t * s) { - http_server_args *args; + http_server_args args; http_session_t *hs; int rv; @@ -496,17 +497,17 @@ http_server_rx_callback (session_t * s) return rv; /* send the command to a new/recycled vlib process */ - args = clib_mem_alloc (sizeof (*args)); - args->hs_index = hs->session_index; - args->thread_index = hs->thread_index; + args.hs_index = hs->session_index; + args.thread_index = hs->thread_index; http_server_sessions_reader_unlock (); - /* Send an RPC request via the thread-0 input node */ + /* Send RPC request to main thread */ if (vlib_get_thread_index () != 0) - session_send_rpc_evt_to_thread (0, alloc_http_process_callback, args); + vlib_rpc_call_main_thread (alloc_http_process_callback, (u8 *) & args, + sizeof (args)); else - alloc_http_process (args); + alloc_http_process (&args); return 0; }