From 1b06bf7f86a8d3fda29493bc68d0e82e4b89029d Mon Sep 17 00:00:00 2001 From: Jason Kenny Date: Tue, 27 Oct 2015 09:30:35 -0500 Subject: [PATCH] Fix issue with TS-3885. Changes to TSNetVConn test to prevent it from hanging when the defer_accept is set ( via config or kernel option) --- proxy/InkAPITest.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/proxy/InkAPITest.cc b/proxy/InkAPITest.cc index 68cfb9210dc..cf1b3dad267 100644 --- a/proxy/InkAPITest.cc +++ b/proxy/InkAPITest.cc @@ -298,6 +298,8 @@ server_handler(TSCont contp, TSEvent event, void *data) SDK_RPRINT(params->test, params->api, "ServerEvent EOS", TC_PASS, "ok"); *params->pstatus = REGRESSION_TEST_PASSED; delete params; + } else if (event == TS_EVENT_VCONN_READ_READY) { + SDK_RPRINT(params->test, params->api, "ServerEvent READ_READY", TC_PASS, "ok"); } else { SDK_RPRINT(params->test, params->api, "ServerEvent", TC_FAIL, "received unexpected event %d", event); *params->pstatus = REGRESSION_TEST_FAILED; @@ -321,12 +323,15 @@ client_handler(TSCont contp, TSEvent event, void *data) // Fix me: how to deal with server side cont? TSContDestroy(contp); return 1; - } else { + } else if (TS_EVENT_NET_CONNECT == event) { sockaddr const *addr = TSNetVConnRemoteAddrGet(static_cast(data)); uint16_t input_server_port = ats_ip_port_host_order(addr); sleep(1); // XXX this sleep ensures the server end gets the accept event. + UnixNetVConnection* vc = static_cast(data); + ::write(vc->con.fd, "Bob's your uncle", 16); + if (ats_is_ip_loopback(addr)) { SDK_RPRINT(params->test, params->api, "TSNetVConnRemoteIPGet", TC_PASS, "ok"); } else {