You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2005/05/22 19:14:29 UTC
cvs commit: jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters SavedRequestInputFilter.java
markt 2005/05/22 10:14:29
Added: http11/src/java/org/apache/coyote/http11/filters
SavedRequestInputFilter.java
Log:
Implement request body replay action.
New input filter used to insert the request body.
Revision Changes Path
1.1 jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters/SavedRequestInputFilter.java
Index: SavedRequestInputFilter.java
===================================================================
/*
* Copyright 1999-2005 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.coyote.http11.filters;
import java.io.IOException;
import org.apache.coyote.InputBuffer;
import org.apache.coyote.http11.InputFilter;
import org.apache.tomcat.util.buf.ByteChunk;
/**
* Input filter responsible for replaying the request body when restoring the
* saved request after FORM authentication.
*/
public class SavedRequestInputFilter implements InputFilter {
/**
* The original request body.
*/
protected ByteChunk input = null;
/**
* Create a new SavedRequestInputFilter.
*
* @param input The saved request body to be replayed.
*/
public SavedRequestInputFilter(ByteChunk input) {
this.input = input;
}
/**
* Read bytes.
*/
public int doRead(ByteChunk chunk, org.apache.coyote.Request request)
throws IOException {
int writeLength = 0;
if (chunk.getLimit() > 0 && chunk.getLimit() < input.getLength()) {
writeLength = chunk.getLimit();
} else {
writeLength = input.getLength();
}
input.substract(chunk.getBuffer(), 0, writeLength);
chunk.setOffset(0);
chunk.setEnd(writeLength);
return writeLength;
}
/**
* Set the content length on the request.
*/
public void setRequest(org.apache.coyote.Request request) {
request.setContentLength(input.getLength());
}
/**
* Make the filter ready to process the next request.
*/
public void recycle() {
input = null;
}
/**
* Return the name of the associated encoding; here, the value is null.
*/
public ByteChunk getEncodingName() {
return null;
}
/**
* Set the next buffer in the filter pipeline (has no effect).
*/
public void setBuffer(InputBuffer buffer) {
}
/**
* End the current request (has no effect).
*/
public long end() throws IOException {
return 0;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
Re: cvs commit: jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters
SavedRequestInputFilter.java
Posted by Remy Maucherat <re...@apache.org>.
Mark Thomas wrote:
> I took a particularly paranoid view and set the default to 4k.
I see this was in the next commit. Great default.
Rémy
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
Re: cvs commit: jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters
SavedRequestInputFilter.java
Posted by Mark Thomas <ma...@apache.org>.
Remy Maucherat wrote:
> Mark Thomas wrote:
>
> If this still goes to the session, then the -1 is not justified.
It does still go to the session.
> The
> code is not done in a way that is very intuitive to me, so that's the
> only issue then, and it's not relevant.
It wasn't that intuitive to me while I was trying to figure out how to
do this either ;) - Bill's assistance was much appreciated for the JK stuff.
> I still have trouble with the concept of saving any POST data, which
> tends to be far bigger than parameters (and retrospectively, I have
> trouble allowing this many parameters). This would kill clustered
> Tomcats setups. Could the default be a very small value (like 64KB or
> something) ?
I took a particularly paranoid view and set the default to 4k.
Mark
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
Re: cvs commit: jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters
SavedRequestInputFilter.java
Posted by Remy Maucherat <re...@apache.org>.
Mark Thomas wrote:
> Remy Maucherat wrote:
>
> The input filter is added to the processor during the processing of the
> final request in the FORM authentication sequence and the data in it is
> consumed during the processing of this request. There is no need for
> this filter, or the data in it, to persist across multiple requests.
>
> Data is persisted between requests (of course it has to be so FORM auth
> can take place) but this is done in the session and therefore it does
> not matter if the processor that handles the original request is
> different from the one that handles the FORM auth request or the final
> redirect to the original URL.
>
> At the moment I do see what is so badly broken about this that justifies
> a -1.
If this still goes to the session, then the -1 is not justified. The
code is not done in a way that is very intuitive to me, so that's the
only issue then, and it's not relevant.
I still have trouble with the concept of saving any POST data, which
tends to be far bigger than parameters (and retrospectively, I have
trouble allowing this many parameters). This would kill clustered
Tomcats setups. Could the default be a very small value (like 64KB or
something) ?
Rémy
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
Re: cvs commit: jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters
SavedRequestInputFilter.java
Posted by Mark Thomas <ma...@apache.org>.
Remy Maucherat wrote:
> markt@apache.org wrote:
>> Implement request body replay action.
>> New input filter used to insert the request body.
>
> This is probably not going to work with the APR protocol, since a
> subsequent request may be processed by a different processor.
>
> All this proves saving POST data is a severly broken concept. I would
> like to get back to the previous situation, and have this whole thing
> reverted.
>
> As a result, here's my official -1 to all these POST data related changes.
The input filter is added to the processor during the processing of the
final request in the FORM authentication sequence and the data in it is
consumed during the processing of this request. There is no need for
this filter, or the data in it, to persist across multiple requests.
Data is persisted between requests (of course it has to be so FORM auth
can take place) but this is done in the session and therefore it does
not matter if the processor that handles the original request is
different from the one that handles the FORM auth request or the final
redirect to the original URL.
At the moment I do see what is so badly broken about this that justifies
a -1.
Mark
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org
Re: cvs commit: jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/filters
SavedRequestInputFilter.java
Posted by Remy Maucherat <re...@apache.org>.
markt@apache.org wrote:
> markt 2005/05/22 10:14:29
>
> Added: http11/src/java/org/apache/coyote/http11/filters
> SavedRequestInputFilter.java
> Log:
> Implement request body replay action.
> New input filter used to insert the request body.
This is probably not going to work with the APR protocol, since a
subsequent request may be processed by a different processor.
All this proves saving POST data is a severly broken concept. I would
like to get back to the previous situation, and have this whole thing
reverted.
As a result, here's my official -1 to all these POST data related changes.
Rémy
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org