Dear All,
 
I'm experimenting with the piped failover on the latest master. I want a failover to stop gw hunting and return from bridge when B-leg receives a specific disconnect code e.g. USER_BUSY or NO_ANSWER, but while it works as expected with error channels in console i.e.:
 
freeswitch@internal> originate {fail_on_single_reject=CALL_REJECTED:USER_BUSY}error/NO_ANSWER|error/USER_BUSY|error/CALL_REJECTED 999
-ERR USER_BUSY
 
freeswitch@internal> originate {fail_on_single_reject=CALL_REJECTED:NO_ANSWER}error/NO_ANSWER|error/USER_BUSY|error/CALL_REJECTED 999
-ERR NO_ANSWER
 
it does not work in dialplan:
 
        <extension name="outbound">
            <condition field="destination_number" expression="^\d{7}$">
                <action application="set" data="bridge_answer_timeout=120"/>
                <action application="set" data="continue_on_fail=NORMAL_TEMPORARY_FAILURE:NO_ROUTE_DESTINATION:CALL_REJECTED"/>
                <action application="set" data="fail_on_single_reject=USER_BUSY:NO_ANSWER:NO_USER_RESPONSE:RECOVERY_ON_TIMER_EXPIRE:ORIGINATOR_CANCEL"/>
                <action application="set" data="bridge_early_media=true"/>
                <action application="set" data="hangup_after_bridge=true"/>
                <action application="odbc_query" inline="true" data="route_out"/>
                <action application="bridge" data="${bridge_to}"/>
                <action application="hangup" data="${last_bridge_hangup_cause}"/>
                <anti-action application="hangup" data="INVALID_NUMBER_FORMAT"/>
            </condition>
        </extension>
 
or when included in bridge dialstring:
 
<action application="bridge" data="{fail_on_single_reject=USER_BUSY:NO_ANSWER}${bridge_to}"/>
 
i.e. it tries *all* gateways in the dialstring and ignores returning codes completely.
 
I tried the same test when remote gateways were just hanging up with USER_BUSY code on receiving calls, but it did not affect the same negative result - all remote peers were tried in order and return code were ignored.
 
I had the same experience with ver 1.2, but that time set continue_on_single_reject=err1,err2,err3 in dialplan worked for me flawlessly. However the same approach does not work for 1.5 and 1.4. Has anyone succeded in getting it to work as expected?
 
Thanks / Mike