You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2017/05/09 20:04:09 UTC

[21/22] httpcomponents-core git commit: HTTPCORE-229: AbstractSessionInputBuffer#readLine(CharArrayBuffer) returns incorrect number of characters read by the method when using non-standard HTTP element charset

HTTPCORE-229: AbstractSessionInputBuffer#readLine(CharArrayBuffer) returns incorrect number of characters read by the method when using non-standard HTTP element charset


git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpcore/branches/4.0.x@963847 13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/commit/6f6d945a
Tree: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/tree/6f6d945a
Diff: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/diff/6f6d945a

Branch: refs/heads/4.0.x
Commit: 6f6d945a0502d4a571214def758f0253747933ab
Parents: c4b80f3
Author: Oleg Kalnichevski <ol...@apache.org>
Authored: Tue Jul 13 20:01:21 2010 +0000
Committer: Oleg Kalnichevski <ol...@apache.org>
Committed: Tue Jul 13 20:01:21 2010 +0000

----------------------------------------------------------------------
 RELEASE_NOTES.txt                                               | 4 ++++
 .../org/apache/http/impl/io/AbstractSessionInputBuffer.java     | 2 ++
 .../src/test/java/org/apache/http/impl/TestSessionBuffers.java  | 5 ++++-
 3 files changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/6f6d945a/RELEASE_NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE_NOTES.txt b/RELEASE_NOTES.txt
index c40a741..fd2c2e1 100644
--- a/RELEASE_NOTES.txt
+++ b/RELEASE_NOTES.txt
@@ -1,5 +1,9 @@
 Changes since 4.0.1
 
+* [HTTPCORE-229] AbstractSessionInputBuffer#readLine(CharArrayBuffer) returns incorrect 
+  number of characters read by the method when using non-standard HTTP element charset.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
 * [HTTPCORE-228] Fixed NPE in AsyncNHttpServiceHandler caused by entity enclosing requests
   if no matching request handler can be found.  
   Contributed by Oleg Kalnichevski <olegk at apache.org>

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/6f6d945a/httpcore/src/main/java/org/apache/http/impl/io/AbstractSessionInputBuffer.java
----------------------------------------------------------------------
diff --git a/httpcore/src/main/java/org/apache/http/impl/io/AbstractSessionInputBuffer.java b/httpcore/src/main/java/org/apache/http/impl/io/AbstractSessionInputBuffer.java
index 8672a56..7415b54 100644
--- a/httpcore/src/main/java/org/apache/http/impl/io/AbstractSessionInputBuffer.java
+++ b/httpcore/src/main/java/org/apache/http/impl/io/AbstractSessionInputBuffer.java
@@ -283,6 +283,7 @@ public abstract class AbstractSessionInputBuffer implements SessionInputBuffer {
             // This is VERY memory inefficient, BUT since non-ASCII charsets are 
             // NOT meant to be used anyway, there's no point optimizing it
             String s = new String(this.linebuffer.buffer(), 0, l, this.charset);
+            l = s.length();
             charbuffer.append(s);
         }
         return l;
@@ -305,6 +306,7 @@ public abstract class AbstractSessionInputBuffer implements SessionInputBuffer {
             // NOT meant to be used anyway, there's no point optimizing it
             String s = new String(this.buffer, off, len, this.charset);
             charbuffer.append(s);
+            len = s.length();
         }
         return len;
     }

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/6f6d945a/httpcore/src/test/java/org/apache/http/impl/TestSessionBuffers.java
----------------------------------------------------------------------
diff --git a/httpcore/src/test/java/org/apache/http/impl/TestSessionBuffers.java b/httpcore/src/test/java/org/apache/http/impl/TestSessionBuffers.java
index e658e4f..9fb3685 100644
--- a/httpcore/src/test/java/org/apache/http/impl/TestSessionBuffers.java
+++ b/httpcore/src/test/java/org/apache/http/impl/TestSessionBuffers.java
@@ -468,7 +468,10 @@ public class TestSessionBuffers extends TestCase {
         HttpProtocolParams.setHttpElementCharset(params, HTTP.ISO_8859_1);
 
         for (int i = 0; i < 10; i++) {
-            assertEquals(s1, inbuffer.readLine());
+            CharArrayBuffer buf = new CharArrayBuffer(64);
+            int len = inbuffer.readLine(buf);
+            assertEquals(len, SWISS_GERMAN_HELLO.length);
+            assertEquals(s1, buf.toString());
         }
         assertNull(inbuffer.readLine());
         assertNull(inbuffer.readLine());