I also think that the current behavior is wrong. I think that TSVConnShutdown(0,1) should be equivalent to shutdown(SHUT_WR) which means that it causes an eof to be read by the other end of the connection. Indeed I am having issues using the VConn from TSHttpConnect() where there is no way to tell it that I am done sending a request such that I get a clear indication when the response is done. Most of the code treats a shutdown properly, but PluginVC::do_io_shutdown() does not seem to do quite the right thing, HttpSM::tunnel_handler_ua() and HttpTunnel::consumer_handler() also treat EOS slightly wrong (they close things up totally), HttpTransact.cc how_to_open_connection() insists on no pending_work which seems wrong...I am working on a fix, but I am not sure if I am there yet.
-William bardwell ________________________________________ From: Alan M. Carroll [a...@network-geographics.com] Sent: Saturday, August 17, 2013 10:48 PM To: Owens, Steve Subject: Re: TSVConnShutdown(TSTransformOutputVConnGet(contp), 0, 1); Monday, August 12, 2013, 5:55:44 PM, you wrote: > The only API call I am making from within my plugin that could indicate to > ATS that we are done with processing is > TSVConnShutdown(TSTransformOutputVConnGet(contp), 0, 1); That call means "shut down the connection right now", which seems to be precisely the effect you are seeing. The better thing to do is chain the TS_EVENT_VCONN_WRITE_COMPLETE to the input VIO from which you are getting data. See example/null-transform/null-transform.c:190.