dev@grizzly.java.net

PUPreProcessorTest#testTLSPUPreProcessor() is failed

From: Bongjae Chang <carryel_at_korea.com>
Date: Tue, 25 Aug 2009 14:16:14 +0900

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