On Thu, 2012-07-19 at 12:44 +0300, Helbrass wrote: > Good day! > > Just discovered really strange behaviour from HttpCore NIO 4.2.1, not sure > if it's a bug or I'm just using it in a wrong way... > > Steps to reproduce: > > 1. use NoConnectionReuseStrategy > 2. add ResponseConnControl to HttpProcessors > 3. implement almost empty HttpAsyncResponseProducer > 4. make a request using Chromium > 5. ResponseConnControl line 86 will not find entity and will set > Connection header to keep-alive on line 100. > 6. HttpAsyncService on line 552 will check ConnectionReuseStrategy and > will close connection. > > So as a result we have Connection: keep-alive reported but connection > closed. > Workaround is of course to set own Connection header and do not add > ResponseConnControl processor, but resulting code is quite messy... >
I believe your expectations are slightly off. Usually ConnectionReuseStrategy implementations is expected to make a decision whether or not the connection can be re-used based on the properties of the response message passed as a parameter. NoConnectionReuseStrategy, however, indiscriminately returns false in all cases regardless of message composition, hence the problem you are facing. You should either manually add 'connection: close' header if connection is not to be re-used and continue using DefaultConnectionReuseStrategy or replace ResponseConnControl with a custom interceptor that always adds 'connection: close' header. Hope this helps Oleg --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
