users@grizzly.java.net

Re: Problem with SSL

From: quende <skrinnikov_at_gmail.com>
Date: Wed, 1 Oct 2008 01:12:23 -0700 (PDT)

Hello,
thanks for your code, but unfortunately, that didn't help - same error at
the same place.
Even if I don't use pipeline and send data to client (like SSLEchoFilter
does) no matter with or without attaching stored WorkerThread attachment,
the client doesn't recognize SSL message

Oct 1, 2008 12:02:30 PM com.sun.grizzly.Controller doSelect
FINE: OP_READ on sun.nio.ch.SelectionKeyImpl_at_16a9d42
Oct 1, 2008 12:02:30 PM com.sun.grizzly.Controller pollContext
FINE: pollContext(..) Context : com.sun.grizzly.Context_at_16cd7d5
Oct 1, 2008 12:02:30 PM com.sun.grizzly.util.SSLUtils unwrap
FINE: start unwrap. buffer: java.nio.HeapByteBuffer[pos=0 lim=16660
cap=16660] secured: java.nio.HeapByteBuffer[pos=53 lim=20480 cap=20480]
Oct 1, 2008 12:02:30 PM com.sun.grizzly.util.SSLUtils unwrap
FINER:
java.lang.Thread.getStackTrace(Thread.java:1426)
com.sun.grizzly.util.SSLUtils.unwrap(SSLUtils.java:245)
com.sun.grizzly.util.SSLUtils.doHandshake(SSLUtils.java:427)
com.sun.grizzly.util.SSLUtils.doHandshake(SSLUtils.java:377)
com.sun.grizzly.filter.SSLReadFilter.doHandshake(SSLReadFilter.java:223)
com.sun.grizzly.filter.SSLReadFilter.execute(SSLReadFilter.java:154)
com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:136)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:103)
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:89)
ClientTest.ClientCallbackHandlerToProtocolChain.onRead(ClientCallbackHandlerToProtocolChain.java:138)
com.sun.grizzly.SSLConnectorHandler$SSLInternalCallbackHandler.onRead(SSLConnectorHandler.java:1196)
com.sun.grizzly.CallbackHandlerContextTask.doCall(CallbackHandlerContextTask.java:76)
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:56)
com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:309)
com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:168)
Oct 1, 2008 12:02:30 PM com.sun.grizzly.filter.SSLReadFilter log
FINE: doHandshake
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
        at
com.sun.net.ssl.internal.ssl.EngineInputRecord.bytesInCompletePacket(EngineInputRecord.java:152)
        at
com.sun.net.ssl.internal.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:754)
        at
com.sun.net.ssl.internal.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:669)
        at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:607)
        at com.sun.grizzly.util.SSLUtils.unwrap(SSLUtils.java:257)
        at com.sun.grizzly.util.SSLUtils.doHandshake(SSLUtils.java:427)
        at com.sun.grizzly.util.SSLUtils.doHandshake(SSLUtils.java:377)
        at
com.sun.grizzly.filter.SSLReadFilter.doHandshake(SSLReadFilter.java:223)
        at
com.sun.grizzly.filter.SSLReadFilter.execute(SSLReadFilter.java:154)
        at
com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:136)
        at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:103)
        at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:89)
        at
ClientTest.ClientCallbackHandlerToProtocolChain.onRead(ClientCallbackHandlerToProtocolChain.java:138)
        at
com.sun.grizzly.SSLConnectorHandler$SSLInternalCallbackHandler.onRead(SSLConnectorHandler.java:1196)
        at
com.sun.grizzly.CallbackHandlerContextTask.doCall(CallbackHandlerContextTask.java:76)
        at
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:56)
        at
com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:309)
        at
com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:168)
Oct 1, 2008 12:02:30 PM com.sun.grizzly.Controller returnContext

Any ideas?

Thanks in advance,
-- Quende


Jeanfrancois Arcand-2 wrote:
>
> Salut,
>
> quende wrote:
>> Hello,
>>
>> John ROM wrote:
>>> Just a guess:
>>> In
>>> DispatchFilter after SSLReader you do logically a
>>> getDefaultPipeline().execute ( {SSLOutputWriter.flushChannel(..) });
>>>
>>
>> Yes, that's what i do.
>>
>>
>> John ROM wrote:
>>> This can't work for SSL because your code will be exeuted on a new
>>> WorkerThread
>>> which has no SSL information...
>>>
>>>
>>
>> I think you are right. But what kind of information is it? I mean, where
>> can
>> I find one on the current thread and is there any chance to share it
>> among
>> newly created WorkerThreads? The concept of pipeline brings me necessary
>> control over the number of threads, I don't want to give it up, so I wish
>> there can be some workaround to keep the pipeline in SSL model.
>
> Mainly, what you need to do is to call:
>
> ThreadAttachment ta = ((WorkerThread)Thread.currentThread()).detach();
>
> The ThreadAttachment contains everything you need. Now pass that
> ThreadAttachment to your Callable/Runable, and make sure the first
> operation you do consist of:
>
> ((WorkerThread)Thread.currentThread()).attach(ta);
>
> After that you are all set.
>
> Hope that help.
>
> -- Jeanfrancois
>
>
>
>
>>
>> Thanks,
>> -- Quende
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: users-help_at_grizzly.dev.java.net
>
>
>

-- 
View this message in context: http://www.nabble.com/Problem-with-SSL-tp19709902p19756290.html
Sent from the Grizzly - Users mailing list archive at Nabble.com.