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

Asankha C. Perera commented on HTTPCORE-193:
--------------------------------------------

Hi Oleg

This happens with SSL and when a "Connection: close" response is received. 
Additionally, in Linux you will not notice this, unless you put a fake 
breakpoint at the line receiveEncryptedData() in SSLIOSession:isAppInputReady() 
to delay. But this occurs normally / and intermittently on the Hudson machine 
running SunOS.

Since the channel has been closed by the peer, it returns -1, but the 
SSLIOSession has unencrypted data as can be seen below, and this seems to be a 
case of the SSLIOSession failing to correctly process data in the buffers.

2009-03-17 02:31:36,929 [-] [https-Sender I/O dispatcher-1] DEBUG SSLIOSession 
I/O session sslclient-2 [interested ops: [r]; ready ops: [r]][SSL handshake 
status: NOT_HANDSHAKING][469][0][0][0]: 141 bytes read
2009-03-17 02:31:36,937 [-] [https-Sender I/O dispatcher-1] DEBUG SSLIOSession 
I/O session sslclient-2 [interested ops: [r]; ready ops: [r]][SSL handshake 
status: NOT_HANDSHAKING][469][0][0][0]: 0 bytes read
[Raw read (bb)]: length = 26
0000: 17 03 01 00 15 F1 BB 57   48 D7 17 49 29 2F 28 8D  .......WH..I)/(.
0010: A5 AC 6D 1E F8 8A F7 C9   C7 70                    ..m......p
Padded plaintext after DECRYPTION:  len = 21
0000: 31 35 65 0D 0A C7 B4 7D   2D DC AD D1 86 99 F3 BB  15e.....-.......
0010: 0B C0 24 95 23                                     ..$.#
2009-03-17 02:31:36,938 [-] [https-Sender I/O dispatcher-1] DEBUG SSLIOSession 
I/O session sslclient-2 [interested ops: [r]; ready ops: [r]][SSL handshake 
status: NOT_HANDSHAKING][443][0][0][0]: 5 bytes read
2009-03-17 02:31:36,988 [-] [https-Sender I/O dispatcher-1] DEBUG SSLIOSession 
I/O session sslclient-2 [invalid][SSL handshake status: 
NOT_HANDSHAKING][443][0][0][0]: Shutdown
2009-03-17 02:31:36,989 [-] [HttpClientWorker-1]  WARN ClientWorker Unexpected 
response received. HTTP response code : 200 HTTP status : OK exception : 
com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
 at [row,col {unknown-source}]: [1,0]

The channel closure is correctly processed by the rest of the logic, and I 
think the channel alone returning -1 cannot be always/fully assumed to indicate 
the end of the SSLIOSession

thanks
asankha

> A Connection close could cause an SSLIOSession to be incorrectly considered 
> as closed in some environments
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: HTTPCORE-193
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-193
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore NIO
>    Affects Versions: 4.0
>         Environment: This has been seen by an Apache Synapse user, as well as 
> by me on the Hudon build machine
> SunOS hudson.zones.apache.org 5.10 Generic_137112-02 i86pc i386 i86pc
> This is not seen on my Linux box, Linux asankha 2.6.24-19-generic #1 SMP Wed 
> Aug 20 17:53:40 UTC 2008
> x86_64 GNU/Linux
>            Reporter: Asankha C. Perera
>            Assignee: Asankha C. Perera
>             Fix For: 4.1
>
>         Attachments: HTTPCORE-193.patch, linux.log, solaris.log
>
>
> This could be seen on the SunOS machine Hudson, and also if a breakpoint is 
> placed at the line receiveEncryptedData() in SSLIOSession:isAppInputReady() 
> to delay its execution slightly
> It seems like the following lines are the cause of the problem:
>         int bytesRead = receiveEncryptedData();
>         if (bytesRead == -1) {
>             this.status = CLOSED;
>         }
> The Channel not having any more bytes does not indicate a close, since there 
> still could be unencrypted data. Just removing the lines that mark the 
> session as closed seems to fix the issue - but should be reviewed.

-- 
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to