I've never really felt very comfortable with tcpmon having an "http mode"
because I never really wanted it to know what the data was, I just wanted
it to be a dumb pass-thru.  But, having the "xml filter" and having
"resend" do the recalc'ing of the content length header has sort of moved
us way past that point so we might was well go all the way.  :-)
*If* we're going to know that we're dealing with HTTP then I like your idea
of tcpmon breaking each individual request/response pair into "something".
I don't like the idea "something" being new entries on the top listbox
since I do believe there is value in knowing which set of request/responses
were on the same socket.  I really like your idea of creating a
"hierarchical structure of connections" where there's only one entry in the
top list box, but somewhere/somehow a 'sublist' is displayed of the
individual req/res pairs that went over that socket. That would be my vote
- but like you said, I think this is the hardest of the options.  My next
choice would be to leave it as it is and just say resend is broken for
multiple connections.
So for becoming a committer I believe this will happen once you've offered
up enough patches.
-Dug


Chris Knight <[EMAIL PROTECTED]> on 01/07/2003 01:25:23 PM

Please respond to [EMAIL PROTECTED]

To:    [EMAIL PROTECTED]
cc:
Subject:    Re: [Bug 15741] - TCP Monitor does not handle WebDAV methods in
       proxy mode


Doug Davis wrote:
>
> Huge +1 - that's what I do too.
> -Dug
>
>
> Tom Jordahl <[EMAIL PROTECTED]> on 01/06/2003 05:32:48 PM
>
> Please respond to [EMAIL PROTECTED]
>
> To:    "'[EMAIL PROTECTED]'" <[EMAIL PROTECTED]>
> cc:
> Subject:    RE: DO NOT REPLY [Bug 15741]  -  TCP Monitor does not handle
>        WebD AV methods in proxy mode
>
>
>
>>I tried out resend today after removing the content-length recalculation
>
> and it
>
>>works great, including with the s/w in proxy mode and multiple hosts in
>
> the same
>
>>TCP connection.
>
>
> Wait a minute, the resend functionality needs to recalculate the
> content-length again because you can edit the request before you send it.
> This is how *I* use the resend button.
>
> Please don't remove that code....

Ah hah...Herein lies a much more complex problem. The current version of
TCPMon does not distinguish between multiple HTTP requests in the same
connection and should be fixed.

A couple ways to approach this (in no particular order of preference and
noting the ease [likelyhood ;^o] of implementation):

* leave it the way it is and note that the content-length re-calculation
is broken for multiple request connections, perhaps not allowing resend
if there are multiple requests in the same connection. Not HTTP/1.1
compliant. (VERY EASY)

* require hand-updating of the content-length, obviously difficult for
users to use (VERY EASY)

* ensure that only one HTTP request can be edited at a time (HARD)

* try to determine where an HTTP request ends by looking for the next
request method (although I would be loathe to hard-code any method names
such as GET, PUT, POST, etc. as they're sure to change.) (HARD - what if
an HTTP "request" is embedded in the body of a POST?)

* close the connection after the first HTTP response to ensure one
request/connection. (EASY)

* when in "HTTP mode", have TCPMon separate individual
requests/responses as if they were individual connections. Would prevent
resending the entire request stream. (MODERATE)

* create a hierarchical structure of connections containing >= 1
request/response pair. (HARD)

What is your opinion?

The bottom two are my preferences, but they're certainly a lot to tackle
and I'd want to make sure that it would meet your needs and be adopted
into the main distribution and hopefully get some help from someone who
understands the code more than I.

As an aside, I'd like to be considered a Contributor (see
http://jakarta.apache.org/site/roles.html) and as such I need to find
out who the Committer is that I should coordinate with to get changes
into CVS.  It might be worthwhile to have the list of Committers (or at
least one) listed on the "Contacting Us" page.




Reply via email to