2012/2/21 <[email protected]>:
> Author: markt
> Date: Mon Feb 20 22:54:13 2012
> New Revision: 1291507
>
> URL: http://svn.apache.org/viewvc?rev=1291507&view=rev
> Log:
> Ping/pong support
>
> Modified:
> tomcat/trunk/java/org/apache/catalina/websocket/StreamInbound.java
> tomcat/trunk/java/org/apache/catalina/websocket/WsInputStream.java
> tomcat/trunk/java/org/apache/catalina/websocket/WsOutbound.java
>
> Modified: tomcat/trunk/java/org/apache/catalina/websocket/StreamInbound.java
> URL:
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/websocket/StreamInbound.java?rev=1291507&r1=1291506&r2=1291507&view=diff
>
Regarding StreamInbound#doClose(), doPing(), doPong()
1. in doClose():
status = status + is.read();
There is no check whether is.read() is not -1 above.
2.All 3 methods have such loops:
while (read > -1) {
data.position(data.position() + read);
read = is.read(data.array(), data.position(), data.remaining());
}
I am not sure what happens if data.remaining() becomes 0 but there are
still data in the stream, e.g. from ill-intended client. I think that
if there is more data than buffer can handle it will hang looping
indefinitely with read=0.
3. doPong() method has unbounded while() loop. It wouldn't hang, but I
think it is bad that there is no control on how many data are
consumed.
Best regards,
Konstantin Kolinko
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]