dev@grizzly.java.net

Re: PUPreProcessorTest#testTLSPUPreProcessor() is failed

From: Bongjae Chang <carryel_at_korea.com>
Date: Tue, 25 Aug 2009 18:27:54 +0900

It works well.

Thank you!

--
Bongjae Chang


  ----- Original Message -----
  From: Oleksiy Stashok
  To: dev_at_grizzly.dev.java.net
  Sent: Tuesday, August 25, 2009 6:22 PM
  Subject: Re: PUPreProcessorTest#testTLSPUPreProcessor() is failed


  Fixed.


  Thank you, Bongjae.


  WBR,
  Alexey.


  On Aug 25, 2009, at 7:16 , Bongjae Chang wrote:


    Hi,

    Today, I updated grizzly from current svn and I tested the unit test case of PUPreProcessorTest.

    But PUPreProcessorTest#testTLSPUPreProcessor() unit test is failed.

    Here are logs.

    ---
    In com.sun.grizzly.portunif.PUPreProcessorTest.txt,

    -------------------------------------------------------------------------------
    Test set: com.sun.grizzly.portunif.PUPreProcessorTest
    -------------------------------------------------------------------------------
    Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 3.297 sec <<< FAILURE!
    testTLSPUPreProcessor(com.sun.grizzly.portunif.PUPreProcessorTest) Time elapsed: 3.265 sec <<< ERROR!
    java.io.EOFException: Unexpected client EOF!
     at com.sun.grizzly.utils.NonBlockingTCPIOClient.receive(NonBlockingTCPIOClient.java:86)
     at com.sun.grizzly.utils.NonBlockingTCPIOClient.receive(NonBlockingTCPIOClient.java:78)
     at com.sun.grizzly.portunif.PUPreProcessorTest.testTLSPUPreProcessor(PUPreProcessorTest.java:135)
    ---

    ---
    In my console log,

    °æ°í: PortUnification exception
    java.nio.BufferOverflowException
     at java.nio.HeapByteBuffer.put(HeapByteBuffer.java:182)
     at com.sun.grizzly.portunif.TLSPUPreProcessor.process(TLSPUPreProcessor.java:226)
     at com.sun.grizzly.portunif.PUReadFilter.execute(PUReadFilter.java:177)
     at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
     at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
     at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
     at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
     at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
     at com.sun.grizzly.NIOContext.execute(NIOContext.java:510)
     at com.sun.grizzly.SelectorHandlerRunner.handleSelectedKey(SelectorHandlerRunner.java:357)
     at com.sun.grizzly.SelectorHandlerRunner.handleSelectedKeys(SelectorHandlerRunner.java:257)
     at com.sun.grizzly.SelectorHandlerRunner.doSelect(SelectorHandlerRunner.java:194)
     at com.sun.grizzly.SelectorHandlerRunner.run(SelectorHandlerRunner.java:129)
     at com.sun.grizzly.util.FixedThreadPool$BasicWorker.dowork(FixedThreadPool.java:379)
     at com.sun.grizzly.util.FixedThreadPool$BasicWorker.run(FixedThreadPool.java:360)
     at java.lang.Thread.run(Thread.java:619)
    2009. 8. 25 ¿ÀÈÄ 1:50:53 com.sun.grizzly.portunif.PUReadFilter execute
    °æ°í: PortUnification exception
    java.io.EOFException
     at com.sun.grizzly.portunif.TLSPUPreProcessor.process(TLSPUPreProcessor.java:263)
     at com.sun.grizzly.portunif.PUReadFilter.execute(PUReadFilter.java:177)
     at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
     at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
     at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
     at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
     at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
     at com.sun.grizzly.NIOContext.execute(NIOContext.java:510)
     at com.sun.grizzly.SelectorHandlerRunner.handleSelectedKey(SelectorHandlerRunner.java:357)
     at com.sun.grizzly.SelectorHandlerRunner.handleSelectedKeys(SelectorHandlerRunner.java:257)
     at com.sun.grizzly.SelectorHandlerRunner.doSelect(SelectorHandlerRunner.java:194)
     at com.sun.grizzly.SelectorHandlerRunner.run(SelectorHandlerRunner.java:129)
     at com.sun.grizzly.util.FixedThreadPool$BasicWorker.dowork(FixedThreadPool.java:379)
     at com.sun.grizzly.util.FixedThreadPool$BasicWorker.run(FixedThreadPool.java:360)
     at java.lang.Thread.run(Thread.java:619)

    java.io.EOFException: Unexpected client EOF!
     at com.sun.grizzly.utils.NonBlockingTCPIOClient.receive(NonBlockingTCPIOClient.java:86)
     at com.sun.grizzly.utils.NonBlockingTCPIOClient.receive(NonBlockingTCPIOClient.java:78)
     at com.sun.grizzly.portunif.PUPreProcessorTest.testTLSPUPreProcessor(PUPreProcessorTest.java:135)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)

    ---

    When I reviewed the error simply, it seemed that the problem had been caused by rev.3539.

    ---
    New Revision: 3539

    Modified:
       trunk/code/modules/utils/src/main/java/com/sun/grizzly/util/SSLUtils.java

    Log:
    + return inputBB to original state, even if Exception occurred

    Modified: trunk/code/modules/utils/src/main/java/com/sun/grizzly/util/SSLUtils.java
    Url: https://grizzly.dev.java.net/source/browse/grizzly/trunk/code/modules/utils/src/main/java/com/sun/grizzly/util/SSLUtils.java?view=diff&rev=3539&p1=trunk/code/modules/utils/src/main/java/com/sun/grizzly/util/SSLUtils.java&p2=trunk/code/modules/utils/src/main/java/com/sun/grizzly/util/SSLUtils.java&r1=3538&r2=3539
    ==============================================================================
    --- trunk/code/modules/utils/src/main/java/com/sun/grizzly/util/SSLUtils.java (original)
    +++ trunk/code/modules/utils/src/main/java/com/sun/grizzly/util/SSLUtils.java 2009-08-24 12:08:24+0000
    @@ -260,9 +260,13 @@
                 }
             }
     
    - inputBB.flip();
    - SSLEngineResult result = sslEngine.unwrap(inputBB, byteBuffer);
    - inputBB.compact();
    + inputBB.flip();
    + SSLEngineResult result;
    + try {
    + result = sslEngine.unwrap(inputBB, byteBuffer);
    + } finally {
    + inputBB.compact();
    + }
             
             // Logging block
             if (LoggerUtils.getLogger().isLoggable(Level.FINE)) {
    ---

    When I reverted the changes experimentally, I could see that the test passed. :)

    Alexey, could you please review this regression?

    Thanks!

    --
    Bongjae Chang