FlashCrossDomainHandler causes infinite loop under some circumstances
Description
We found that after running for several hours, the openfire server always has a 100% CPU usage.
By using the jvirtualVM to monitor the CPU usage sample graph, we found this is caused by the read() method (see the code below) of the FlashCrossDomainHandler class. it can run into a infinite loop under some circumstances.
Then we commented the read() method, the validation of the incoming stream and returned the cross domain policy text straightway in while loop of the startServer() method , as the result the CPU usage became normal.
Environment
None
Activity
Show:
Florian Schmaus
March 3, 2013 at 11:15 PM
The code hasn't changed since the reporting of the issue and the read method could still loop endlessly.
We found that after running for several hours, the openfire server always has a 100% CPU usage.
By using the jvirtualVM to monitor the CPU usage sample graph, we found this
is caused by the read() method (see the code below) of the FlashCrossDomainHandler
class. it can run into a infinite loop under some circumstances.
http://fisheye.igniterealtime.org/browse/~br=trunk/openfire/trunk/src/java/org/jivesoftware/openfire/FlashCrossDomainHandler.java?r=11608#to156
Then we commented the read() method, the validation of the incoming stream and
returned the cross domain policy text straightway in while loop of the startServer()
method , as the result the CPU usage became normal.