X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fhs_apps%2Fvcl%2Fvcl_test_client.c;h=236cbfff913a7896f4118f2ac235a19b7171f909;hb=0250090fc0c24214cb1fa969f6e2f585099ee36b;hp=b9bdd6eed554965550b912c27be51cea3e229fcd;hpb=9fd996275c745faec2843cf3a8b1d15d6f8c9dab;p=vpp.git diff --git a/src/plugins/hs_apps/vcl/vcl_test_client.c b/src/plugins/hs_apps/vcl/vcl_test_client.c index b9bdd6eed55..236cbfff913 100644 --- a/src/plugins/hs_apps/vcl/vcl_test_client.c +++ b/src/plugins/hs_apps/vcl/vcl_test_client.c @@ -123,7 +123,7 @@ vtc_quic_connect_test_sessions (vcl_test_client_worker_t * wrk) { vcl_test_client_main_t *vcm = &vcl_client_main; vcl_test_session_t *ts, *tq; - uint32_t i; + uint32_t i, flags, flen; int rv; if (wrk->cfg.num_test_sessions < 1 || wrk->cfg.num_test_sessions_perq < 1) @@ -155,7 +155,7 @@ vtc_quic_connect_test_sessions (vcl_test_client_worker_t * wrk) for (i = 0; i < wrk->cfg.num_test_qsessions; i++) { tq = &wrk->qsessions[i]; - tq->fd = vppcom_session_create (vcm->proto, 1 /* is_nonblocking */ ); + tq->fd = vppcom_session_create (vcm->proto, 0 /* is_nonblocking */ ); tq->session_index = i; if (tq->fd < 0) { @@ -163,12 +163,16 @@ vtc_quic_connect_test_sessions (vcl_test_client_worker_t * wrk) return tq->fd; } + /* Connect is blocking */ rv = vppcom_session_connect (tq->fd, &vcm->server_endpt); if (rv < 0) { vterr ("vppcom_session_connect()", rv); return rv; } + flags = O_NONBLOCK; + flen = sizeof (flags); + vppcom_session_attr (tq->fd, VPPCOM_ATTR_SET_FLAGS, &flags, &flen); vtinf ("Test Qsession %d (fd %d) connected.", i, tq->fd); } wrk->n_qsessions = wrk->cfg.num_test_qsessions; @@ -223,6 +227,7 @@ vtc_connect_test_sessions (vcl_test_client_worker_t * wrk) vcl_test_client_main_t *vcm = &vcl_client_main; vcl_test_session_t *ts; uint32_t n_test_sessions; + uint32_t flags, flen; int i, rv; if (vcm->proto == VPPCOM_PROTO_QUIC) @@ -253,19 +258,23 @@ vtc_connect_test_sessions (vcl_test_client_worker_t * wrk) for (i = 0; i < n_test_sessions; i++) { ts = &wrk->sessions[i]; - ts->fd = vppcom_session_create (vcm->proto, 1 /* is_nonblocking */ ); + ts->fd = vppcom_session_create (vcm->proto, 0 /* is_nonblocking */ ); if (ts->fd < 0) { vterr ("vppcom_session_create()", ts->fd); return ts->fd; } + /* Connect is blocking */ rv = vppcom_session_connect (ts->fd, &vcm->server_endpt); if (rv < 0) { vterr ("vppcom_session_connect()", rv); return rv; } + flags = O_NONBLOCK; + flen = sizeof (flags); + vppcom_session_attr (ts->fd, VPPCOM_ATTR_SET_FLAGS, &flags, &flen); vtinf ("Test session %d (fd %d) connected.", i, ts->fd); } wrk->n_sessions = n_test_sessions; @@ -385,7 +394,7 @@ vtc_accumulate_stats (vcl_test_client_worker_t * wrk, if (ctrl->cfg.verbose > 1) { - sprintf (buf, "CLIENT (fd %d) RESULTS", ts->fd); + snprintf (buf, sizeof (buf), "CLIENT (fd %d) RESULTS", ts->fd); vcl_test_stats_dump (buf, &ts->stats, show_rx, 1 /* show tx */ , ctrl->cfg.verbose); } @@ -544,10 +553,10 @@ vtc_print_stats (vcl_test_session_t * ctrl) } if (is_echo) - sprintf (buf, "Echo"); + snprintf (buf, sizeof (buf), "Echo"); else - sprintf (buf, "%s-directional Stream", - ctrl->cfg.test == VCL_TEST_TYPE_BI ? "Bi" : "Uni"); + snprintf (buf, sizeof (buf), "%s-directional Stream", + ctrl->cfg.test == VCL_TEST_TYPE_BI ? "Bi" : "Uni"); } static void @@ -903,7 +912,7 @@ vtc_process_opts (vcl_test_client_main_t * vcm, int argc, char **argv) optopt, ctrl->txbuf_size); print_usage_and_exit (); } - strcpy (ctrl->txbuf, optarg); + strncpy (ctrl->txbuf, optarg, ctrl->txbuf_size); ctrl->cfg.test = VCL_TEST_TYPE_ECHO; break;