On Tue, May 21, 2013 at 3:15 PM, Niki Dokovski <nick...@gmail.com> wrote:

>
>
>
> On Mon, May 20, 2013 at 5:09 PM, Niki Dokovski <nick...@gmail.com> wrote:
>
>>
>>
>>
>> On Mon, May 20, 2013 at 3:45 PM, Niki Dokovski <nick...@gmail.com> wrote:
>>
>>>
>>>
>>>
>>> On Fri, May 17, 2013 at 3:53 PM, Niki Dokovski <nick...@gmail.com>wrote:
>>>
>>>>
>>>>
>>>>
>>>> On Fri, May 17, 2013 at 3:35 PM, Mark Thomas <ma...@apache.org> wrote:
>>>>
>>>>> On 17/05/2013 13:07, Niki Dokovski wrote:
>>>>> > Hi,
>>>>> >
>>>>> > Developing some sample apps with websockets and tomcat 8 revealed two
>>>>> > issues I’d like to discuss here.
>>>>> >
>>>>> > 1.       There is no proxy support in the implementation of
>>>>> > WebSocketContainer.connectToServer calls. While playing around with
>>>>> the
>>>>> > code it was relatively easy to add this in the implementation with
>>>>> simple
>>>>> > consideration of http.proxyHost and xxxxPort system properties;
>>>>> replacing
>>>>> > host and port values which were obtained from path method parameter
>>>>> and
>>>>> > making initial HTTP CONNECT message to the proxy. In this case, do
>>>>> you
>>>>> > think we can add proxy support here? I was thinking how to provide
>>>>> some
>>>>> > kind of automation test as well, but no luck so far.
>>>>>
>>>>> Personally I dislike the global nature system properties for
>>>>> configuration unless they are absolutely the only option.
>>>>>
>>>>> Since the WebSocket API has no way of setting a proxy at the moment,
>>>>> system properties might be the only choice :(
>>>>>
>>>>> This is an issue you should raise with the WebSocket EG group. I
>>>>> suggest
>>>>> opening a Jira to request proxy support in a future version.
>>>>> https://java.net/jira/browse/WEBSOCKET_SPEC
>>>>
>>>>
>>>> Here is the issue:
>>>> https://java.net/jira/browse/WEBSOCKET_SPEC-202
>>>>
>>>>
>>>>
>>>>>
>>>>>
>>>>>
>>>>> > 2.       So when I got my proxy tunneling in place (with the CONNECT
>>>>> http
>>>>> > request) I hit a tougher problem with SSL handshake implementation in
>>>>> > WebSocketSslHandshakeThread. The SSL handshake was successful while
>>>>> I was
>>>>> > stepping with the debugger through the code and failed when I  run
>>>>> the
>>>>> > test. It should be some timing issue. This bit needs more debugging.
>>>>> Have
>>>>> > you seen this before?
>>>>>
>>>>> No, but the SSL support for WebSocket clients hasn't been heavily used
>>>>> yet so there could still be some bugs to iron out. If you haven't
>>>>> already, take a look at
>>>>> TestWsWebSocketContainer.testConnectToServerEndpointSSL()
>>>>>
>>>>> Mark
>>>>>
>>>>>
>>>>>
>>>> Thanks. I'll take a look at it.
>>>>
>>>>
>>>
>>> Doing some debugging in the implementation of
>>> AsyncChannelWeapperSecure.WebSocketSslHandshakeThread run()
>>> revealed that by having small timeout (thread sleep) in "NEED_WRAP"
>>> case, allows SSL handshake to complete successfully.
>>> (This is still the case when there is a HTTP Proxy tunnel established
>>> between Endpoints) This is not the solution for the problem, of course.
>>> Here I attach some sysout logs with working and non-working flows.
>>> 1. working example:
>>> after sending initial message sleep the executing thread in "need_wrap"
>>> case for little and you get following sequence
>>> write: 154
>>> write done: true
>>> NEED_UNWRAP
>>> read: 2357
>>> read done: true
>>> ....
>>> SSL Handshake is OK
>>>
>>>
>>> 2. non working example
>>> write: 154
>>> write done: true
>>> NEED_UNWRAP
>>> read: 1460 << much less bytes to consider
>>> read done: true
>>> ...
>>> Exception
>>>
>>>
>>> Any comments?
>>>
>>
>> getting closer as the error condition is caused by BUFFER_UNDERFLOW
>> state. Will try to read again in this condition. Basically there is no
>> enough bytes to construct the message in SSLEngine.
>>
>
> OK that does the trick. Here is a bug on the issue
> https://issues.apache.org/bugzilla/show_bug.cgi?id=54997
> I'll try to polish a bit and send a small code snippet solving
> BUFFER_UNDERFLOW case for discussion.
>
> cheers
> Niki
>

Here are two patches for http proxy support (WsWebSocketContainer) and
buffer underflow (AsyncChannelWrapperSecure) fix respectively.  I'd like to
ask for your comments.

cheers
Niki






>
>
>>
>>>
>>>
>>>
>>>
>>>
>>>>  ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
>>>>> For additional commands, e-mail: dev-h...@tomcat.apache.org
>>>>>
>>>>>
>>>>
>>>
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to