[ 
https://issues.apache.org/jira/browse/HTTPCORE-270?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13089548#comment-13089548
 ] 

Oleg Kalnichevski commented on HTTPCORE-270:
--------------------------------------------

Two reasons: 
1. this is a new bit of code added in this release after the minimal jre level 
requirement was raised to 1.5. 
2. One must explicitly configure HttpCore to use chars other than default ASCII 
in order to hit that particular execution path.


> IllegalStateException in AbstractSessionOutputBuffer
> ----------------------------------------------------
>
>                 Key: HTTPCORE-270
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-270
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore
>    Affects Versions: 4.2-alpha1
>            Reporter: William R. Speirs
>            Priority: Critical
>             Fix For: 4.2-alpha2
>
>
> I am using httpclient-4.1.2 & httpcore-4.2-alpha1. In making an 
> DefaultHttpClient.execute() call I get the following exception:
>  java.lang.IllegalStateException: Current state = RESET, new state = FLUSHED
>       at 
> java.nio.charset.CharsetEncoder.throwIllegalStateException(CharsetEncoder.java:951)
>       at java.nio.charset.CharsetEncoder.flush(CharsetEncoder.java:640)
>       at 
> org.apache.http.impl.io.AbstractSessionOutputBuffer.writeEncoded(AbstractSessionOutputBuffer.java:264)
>       at 
> org.apache.http.impl.io.AbstractSessionOutputBuffer.writeLine(AbstractSessionOutputBuffer.java:247)
>       at 
> org.apache.http.impl.conn.LoggingSessionOutputBuffer.writeLine(LoggingSessionOutputBuffer.java:99)
>       at 
> org.apache.http.impl.io.AbstractMessageWriter.write(AbstractMessageWriter.java:97)
>       at 
> org.apache.http.impl.AbstractHttpClientConnection.sendRequestHeader(AbstractHttpClientConnection.java:253)
> On line 264 of AbstractSessionOutputBuffer.java, encoder.flush() is being 
> called. My thought (I have not completely debugged) is that in this instance, 
> cbuf.hasRemaining() is false, and therefor the following calls are being made:
> encoder.reset()
> encoder.flush()
> This is resulting in the above exception.
> I believe the following small patch will short-circuit the code, and fix the 
> issue.
> Thoughts?
> Index: 
> httpcore/src/main/java/org/apache/http/impl/io/AbstractSessionOutputBuffer.java
> ===================================================================
> --- 
> httpcore/src/main/java/org/apache/http/impl/io/AbstractSessionOutputBuffer.java
>      (revision 1160689)
> +++ 
> httpcore/src/main/java/org/apache/http/impl/io/AbstractSessionOutputBuffer.java
>      (working copy)
> @@ -256,6 +256,10 @@
>          if (this.bbuf == null) {
>              this.bbuf = ByteBuffer.allocate(1024);
>          }
> +       if(!cbuf.hasRemaining()) {
> +               return;
> +       }
> +
>          this.encoder.reset();
>          while (cbuf.hasRemaining()) {
>              CoderResult result = this.encoder.encode(cbuf, this.bbuf, true);

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to