Odi, Roland, Mike, and Adam
Thanks for the feedback. I took another look at the code this morning
and had to concede that any half-measure would hardly make things better
(or cleaner). Until HttpMethod interface is split into
HttpRequest/HttpResponse pair, decoupling of request assembly and
request execution logic does not make a lot of sense.

No revolution for now. Especially on November the 7th. The previous one
did little good.

I'll provide a fix for the bug sometime this weekend. No API changes
will be involved.

Cheers

Oleg

On Fri, 2003-11-07 at 07:41, Roland Weber wrote:
> Hi Oleg,
> 
> the urge to take something apart and put it back together
> the way it should be is something I can sympathize with.
> But, as Mike pointed out, the idea was to keep the bad
> stuff for this release and do the overhaul for the next one.
> I think if you can hang on through these hard times, you'll
> have even more fun once you get started on 3.0.
> 
> As for the problem at hand, here is one suggestion:
> Currently, you are keeping all headers in the same place
> and try to throw out the auto-generated ones to clean up.
> Instead, you could collect the manually set headers in a
> dedicated place. When headers get generated, you start
> by copying them into an empty header set, then adding
> those that need to be generated to that new set. Cleanup
> reduces to throwing away the generated set.
> 
> cheer up!
>   Roland
> 
> 
> 
> 
> 
> 
> Oleg Kalnichevski <[EMAIL PROTECTED]>
> 06.11.2003 23:40
> Please respond to "Commons HttpClient Project"
>  
>         To:     Jakarata Commons HttpClient mailing list 
> <[EMAIL PROTECTED]>
>         cc: 
>         Subject:        HttpClient Revolutions
> 
> 
> Folks,
> This is one of those days when my frustration with the existing
> HttpClient architecture reaches the point when I can hardly fight off
> the idea of stating a fork at SourceForge in order to finally get the
> very basic things right. I am really getting tired of patching the
> deficient architecture and bending it in all sorts of creative ways.
> 
> I was trying to provide a fix for the bug that I introduced with one of
> my recent patches (authentication headers created by HttpMethodDirector
> end up removed in HttpMethodBase). The nasty thing is that since headers
> can be added to the HTTP method in several places, it is not quite clear
> at what point auto-generated headers are safe to be removed. If the
> auto-generated are cleaned up in the authentication/redirect loop, then
> they are not cleaned up in case of automatic recovery from a transport
> exception. As a result cookie headers can be duplicated. If the
> auto-generated headers are cleaned inside the retry loop, authentication
> headers are not re-generated in case of the method retry.
> 
> So, once again the real trouble is the ugly design of the HttpMethod
> interface/HttpMethodBase class. The decision to recreate request headers
> every time the method is being executed was ill-conceived, not to
> mention that this is not quite efficient. 
> 
> I strongly believe that the process of request assembly and request
> execution should be decoupled. I suggest the
> generateRequstHeaders(HttpState, HttpConnection) method be added to the
> HttpMethod interface. The only problem that concerns me is that this may
> be too much of a change for 2.1 release, and I once again will end up
> accused of all sorts of things ranging from not caring about backward
> compatibility to deliberately breaking other people's stuff. Actually
> applications that only use public HttpClient APIs will not be affected,
> but classes implementing HttpMethod interface will be broken.
> 
> Let me know what's your feeling about this
> 
> I'm off to bed
> 
> Oleg
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: 
> [EMAIL PROTECTED]
> For additional commands, e-mail: 
> [EMAIL PROTECTED]
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to