You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Oleg Kalnichevski (JIRA)" <ji...@apache.org> on 2007/10/12 13:29:50 UTC

[jira] Updated: (HTTPCORE-123) SSL: Buffered data lost, if connection closed on server side

     [ https://issues.apache.org/jira/browse/HTTPCORE-123?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Oleg Kalnichevski updated HTTPCORE-123:
---------------------------------------

    Fix Version/s: 4.0-beta1
         Assignee: Oleg Kalnichevski
         Priority: Critical  (was: Major)

> SSL: Buffered data lost, if connection closed on server side
> ------------------------------------------------------------
>
>                 Key: HTTPCORE-123
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-123
>             Project: HttpComponents Core
>          Issue Type: Bug
>          Components: HttpCore NIO
>    Affects Versions: 4.0-alpha6
>         Environment: jre1.5.0_06, apache2
>            Reporter: Risto ReinpƵld
>            Assignee: Oleg Kalnichevski
>            Priority: Critical
>             Fix For: 4.0-beta1
>
>
> In case of 'Connection: close' connections to https web server the connection might be terminated on server side before data has reached the client application. Step by step scenario.
> 1. SSLIOSession.isAppInputReady receives encrypted data and sees end of stream (status = CLOSED);
> 2. SSLIOSession.decryptData decypted the received data and puts into inPlain buffer;
> 3. NHttpClientHandler.inputReady is called. App calls decoder.read, but decoder will not get the data in SSLIOSession.inPLain, because of the check in SSLIOSession.unwrap:
>         if (this.status != ACTIVE) {
>             return -1;
>         }
> Moving this after inPlain.position() > 0 check would quickfix the problem, but maybe it not the best way of doing it.
> Index: SSLIOSession.java
> ===================================================================
> --- SSLIOSession.java   (revision 582811)
> +++ SSLIOSession.java   (working copy)
> @@ -298,9 +298,6 @@
>          if (dst == null) {
>              throw new IllegalArgumentException("Byte buffer may not be null");
>          }
> -        if (this.status != ACTIVE) {
> -            return -1;
> -        }
>          if (this.inPlain.position() > 0) {
>              this.inPlain.flip();
>              int n = Math.min(this.inPlain.remaining(), dst.remaining());
> @@ -309,6 +306,8 @@
>              }
>              this.inPlain.compact();
>              return n;
> +        } else if (this.status != ACTIVE) {
> +            return -1;
>          } else {
>              return 0;
>          }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: httpcomponents-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpcomponents-dev-help@jakarta.apache.org