From 948e203a618b042f18b51d3e84a662c42d2692a5 Mon Sep 17 00:00:00 2001 From: Olof hagsand Date: Sun, 27 Oct 2019 10:24:13 +0100 Subject: [PATCH] moved initial hello request from client to backend to immediate before first actual query --- apps/cli/cli_main.c | 6 +++++- apps/netconf/netconf_main.c | 7 ++++++- apps/restconf/restconf_main.c | 20 +++++++++++++++----- test/sum.sh | 5 ++++- test/test_sock.sh | 9 ++++++--- 5 files changed, 36 insertions(+), 11 deletions(-) diff --git a/apps/cli/cli_main.c b/apps/cli/cli_main.c index 4860f637..a9e2f7bf 100644 --- a/apps/cli/cli_main.c +++ b/apps/cli/cli_main.c @@ -599,7 +599,11 @@ main(int argc, char **argv) /* Go into event-loop unless -1 command-line */ if (!once){ - /* send hello request from backend hello */ + /* Send hello request to backend to get session-id back + * This is done once at the beginning of the session and then this is + * used by the client, even though new TCP sessions are created for + * each message sent to the backend. + */ if (clicon_hello_req(h, &id) < 0) goto done; clicon_session_id_set(h, id); diff --git a/apps/netconf/netconf_main.c b/apps/netconf/netconf_main.c index e9e9a89b..02e8d94e 100644 --- a/apps/netconf/netconf_main.c +++ b/apps/netconf/netconf_main.c @@ -562,11 +562,16 @@ main(int argc, clicon_session_id_set(h, getpid()); #endif - /* send hello request from backend hello */ + /* Send hello request to backend to get session-id back + * This is done once at the beginning of the session and then this is + * used by the client, even though new TCP sessions are created for + * each message sent to the backend. + */ if (clicon_hello_req(h, &id) < 0) goto done; clicon_session_id_set(h, id); + /* Send hello to northbound client */ if (!quiet) send_hello(h, 1, id); if (event_reg_fd(0, netconf_input_cb, h, "netconf socket") < 0) diff --git a/apps/restconf/restconf_main.c b/apps/restconf/restconf_main.c index 663d6041..1bcadbfd 100644 --- a/apps/restconf/restconf_main.c +++ b/apps/restconf/restconf_main.c @@ -584,7 +584,8 @@ main(int argc, yang_stmt *yspec = NULL; yang_stmt *yspecfg = NULL; /* For config XXX clixon bug */ char *stream_path; - int finish; + int finish = 0; + int start = 1; char *str; clixon_plugin *cp = NULL; uint32_t id = 0; @@ -781,10 +782,6 @@ main(int argc, clicon_err(OE_CFG, errno, "FCGX_OpenSocket"); goto done; } - /* send hello request from backend hello */ - if (clicon_hello_req(h, &id) < 0) - goto done; - clicon_session_id_set(h, id); if (clicon_socket_set(h, sock) < 0) goto done; @@ -805,6 +802,19 @@ main(int argc, goto done; } clicon_debug(1, "------------"); + + if (start == 0){ + /* Send hello request to backend to get session-id back + * This is done once at the beginning of the session and then this is + * used by the client, even though new TCP sessions are created for + * each message sent to the backend. + */ + if (clicon_hello_req(h, &id) < 0) + goto done; + clicon_session_id_set(h, id); + start++; + } + if ((path = FCGX_GetParam("REQUEST_URI", r->envp)) != NULL){ clicon_debug(1, "path: %s", path); if (strncmp(path, "/" RESTCONF_API, strlen("/" RESTCONF_API)) == 0) diff --git a/test/sum.sh b/test/sum.sh index c3a556b7..dce42c68 100755 --- a/test/sum.sh +++ b/test/sum.sh @@ -7,8 +7,11 @@ if [ $# -gt 0 ]; then exit -1 fi +# Pattern to run tests, default is all, but you may want to narrow it down +: ${pattern:=test_*.sh} + err=0 -for testfile in test*.sh; do # For lib.sh the variable must be called testfile +for testfile in $pattern; do # For lib.sh the variable must be called testfile echo "Running $testfile" ./$testfile > /dev/null 2>&1 errcode=$? diff --git a/test/test_sock.sh b/test/test_sock.sh index d82c53bd..ca702790 100755 --- a/test/test_sock.sh +++ b/test/test_sock.sh @@ -57,15 +57,18 @@ EOF start_backend -s init -f $cfg fi + new "waiting" + wait_backend + new "$clixon_cli -1f $cfg show version" expectfn "$clixon_cli -1f $cfg show version" 0 "$version." - new "hello session-id 1" - expecteof "$clixon_util_socket -a $family -s $sock -D $DBG" 0 "" "1" - new "hello session-id 2" expecteof "$clixon_util_socket -a $family -s $sock -D $DBG" 0 "" "2" + new "hello session-id 2" + expecteof "$clixon_util_socket -a $family -s $sock -D $DBG" 0 "" "3" + if [ $BE -ne 0 ]; then new "Kill backend" # Check if premature kill