[Icecast-dev] Fallback on-demand relay problem

Randy McAnally rsm at fast-serv.com
Thu Aug 2 08:24:16 PDT 2007


We found an interesing issue that after a downed publishing point is 
restored, the fallback relay doesn't stop relaying.  We've tried everything, 
but once /asf2 or /asf3 is envoked for /asf1 fallback reasons, they don't 
stop relaying their source streams even though the output stream /asf1 has 
returned to normal.  Eventually we end up with /asf2 relaying indefinately 
with no listeners until we manually kick it from it's source server.

It seems there is a bug somewhere in the on-demand logic for relays and 
fallback.

Here's the scenario -

1. Player connects to /asf1
2. Source relay for /asf1 is downed
3. Player is now playing /asf2 as it should.  Relay for /asf2 starts.
4. Source relay for /asf2 is downed
5. Player is now playing /asf3 as it should.
6. Relay for /asf2 is restored
7. Player is now playing /asf2 as it should.
8. Relay for /asf1 is restored
9. Player is now playing /asf1 as it should.
***  Relay for /asf2 never disconnects until kicked.  Status page shows all 
three mount points up and running, instead of just 1 and 3.

Here's the layout -

/asf1 is primary relay
/asf2 is fallback relay for asf1
/asf3 is a live encoder connection that is fallback for /asf2

    <relays-on-demand>1</relays-on-demand>

    <relay>
        <server>10.0.0.1</server>
        <port>6996</port>
        <mount>/</mount>
        <local-mount>/asf1</local-mount>
        <on-demand>1</on-demand>
        <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
    </relay>

    <relay>
        <server>10.0.0.2</server>
        <port>6996</port>
        <mount>/</mount>
        <local-mount>/asf2</local-mount>
        <on-demand>1</on-demand>
        <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
    </relay>

    <mount>
        <mount-name>/asf1</mount-name>
        <max-listeners>10</max-listeners>
        <burst-size>65536</burst-size>
        <fallback-mount>/asf2</fallback-mount>
        <fallback-override>1</fallback-override>
        <fallback-when-full>0</fallback-when-full>
        <hidden>0</hidden>
        <no-yp>1</no-yp>
    </mount>

    <mount>
        <mount-name>/asf2</mount-name>
        <max-listeners>10</max-listeners>
        <burst-size>65536</burst-size>
        <fallback-mount>/asf3</fallback-mount>
        <fallback-override>1</fallback-override>
        <fallback-when-full>0</fallback-when-full>
        <hidden>0</hidden>
        <no-yp>1</no-yp>
    </mount>

    <mount>
        <mount-name>/asf3</mount-name>
        <max-listeners>10</max-listeners>
        <burst-size>65536</burst-size>
        <!-- <fallback-mount></fallback-mount> -->
        <fallback-override>1</fallback-override>
        <fallback-when-full>0</fallback-when-full>
        <hidden>0</hidden>
        <no-yp>1</no-yp>
    </mount>


--
Randy M.
www.fastserv.com
877-255-9081 x201



More information about the Icecast-dev mailing list