So I found my app was taking a long time to index these
files, which meant that it was timing out. No problem,
thinks I, I'll just increase the timeout value in the
red5.properties file.

But it was to no avail! It coninued to timout, even when
the rtmp.max_inactivity was set well high.

Further investgation shows that RTMPConnection.java 
compares (lastPingSent - lastPongReceived > maxInactivity)
to see if there's a timeout. Which is fine if it's
ever recieved a ping reply, but if not even the first
ping is replied to then lastPongReceived is still zero,
so the comparison drops through to the code to close
the inactive connection whatever the value of max_inactivity.

This can be fixed with one line of code inserted into the
ping() function to set lastPongReceived as well as lastPingSent
if it's setting the value for the first time.

One line does the trick:
     if(lastPingSent==0){lastPongReceived = System.currentTimeMillis();}



IE the pong function was:
--------------
        public void ping() {
                Ping pingRequest = new Ping();
                pingRequest.setValue1((short) Ping.PING_CLIENT);
                lastPingSent = System.currentTimeMillis();
                int now = (int) (lastPingSent & 0xffffffff);
                pingRequest.setValue2(now);
                pingRequest.setValue3(Ping.UNDEFINED);
                ping(pingRequest);
        }
--------------

But a working version would read:

--------------
        public void ping() {
                if(lastPingSent==0){ lastPongReceived = 
System.currentTimeMillis(); }
                Ping pingRequest = new Ping();
                pingRequest.setValue1((short) Ping.PING_CLIENT);
                lastPingSent = System.currentTimeMillis();
                int now = (int) (lastPingSent & 0xffffffff);
                pingRequest.setValue2(now);
                pingRequest.setValue3(Ping.UNDEFINED);
                ping(pingRequest);
        }
--------------


Can someone drop that into the main trunk? Or let me know
where I should post the fix if this maillist isn't good enough?

Thanks.

        Adam..........

_______________________________________________
Red5 mailing list
[email protected]
http://osflash.org/mailman/listinfo/red5_osflash.org

Reply via email to