On Aug 27, 2013, at 7:29 PM, "Bardwell, William" <wbard...@akamai.com> wrote:
> 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. Are there any small fixes or refactorings that would make the behaviour more consistent? Maybe not a complete fix, but an incremental improvement ... > > -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.