View | Details | Raw Unified | Return to bug 44494
Collapse All | Expand All

(-)java/org/apache/catalina/connector/InputBuffer.java (-4 / +19 lines)
Lines 150-157 Link Here
150
     * Buffer size.
150
     * Buffer size.
151
     */
151
     */
152
    private int size = -1;
152
    private int size = -1;
153
    
154
    
155
    /**
156
     * readAheadLimit for mark and reset. 
157
     */
158
    private int readAheadLimit = -1;
159
    
153
160
154
155
    // ----------------------------------------------------------- Constructors
161
    // ----------------------------------------------------------- Constructors
156
162
157
163
Lines 363-368 Link Here
363
            }
369
            }
364
        }
370
        }
365
371
372
        if (markPos >= 0){
373
        	if (cb.getOffset() - markPos > readAheadLimit){
374
        		markPos = -1;
375
        	}
376
        }
377
        
366
        if (markPos == -1) {
378
        if (markPos == -1) {
367
            cb.setOffset(0);
379
            cb.setOffset(0);
368
            cb.setEnd(0);
380
            cb.setEnd(0);
Lines 466-471 Link Here
466
        if (closed)
478
        if (closed)
467
            throw new IOException(sm.getString("inputBuffer.streamClosed"));
479
            throw new IOException(sm.getString("inputBuffer.streamClosed"));
468
480
481
        if (readAheadLimit < 0){
482
        	throw new IllegalArgumentException(sm.getString("inputBuffer.readAheadLimitNegative"));
483
        }
484
469
        if (cb.getLength() <= 0) {
485
        if (cb.getLength() <= 0) {
470
            cb.setOffset(0);
486
            cb.setOffset(0);
471
            cb.setEnd(0);
487
            cb.setEnd(0);
Lines 480-485 Link Here
480
        }
496
        }
481
        cb.setLimit(cb.getStart() + readAheadLimit + size);
497
        cb.setLimit(cb.getStart() + readAheadLimit + size);
482
        markPos = cb.getStart();
498
        markPos = cb.getStart();
499
        this.readAheadLimit = readAheadLimit;
483
    }
500
    }
484
501
485
502
Lines 491-499 Link Here
491
508
492
        if (state == CHAR_STATE) {
509
        if (state == CHAR_STATE) {
493
            if (markPos < 0) {
510
            if (markPos < 0) {
494
                cb.recycle();
511
                throw new IOException(sm.getString("inputBuffer.markNotEffective"));
495
                markPos = -1;
496
                throw new IOException();
497
            } else {
512
            } else {
498
                cb.setOffset(markPos);
513
                cb.setOffset(markPos);
499
            }
514
            }
(-)java/org/apache/catalina/connector/LocalStrings.properties (-1 / +3 lines)
Lines 76-79 Link Here
76
mapperListener.unregisterContext=Unregister Context {0}
76
mapperListener.unregisterContext=Unregister Context {0}
77
mapperListener.registerWrapper=Register Wrapper {0} in Context {1}
77
mapperListener.registerWrapper=Register Wrapper {0} in Context {1}
78
78
79
inputBuffer.streamClosed=Stream closed
79
inputBuffer.streamClosed=Stream closed
80
inputBuffer.readAheadLimitNegative=readAheadLimit value is negative
81
inputBuffer.markNotEffective=The mark is not effective

Return to bug 44494