do not retry so fast on failed outbound subs
This commit is contained in:
parent
6a1d552430
commit
e37616e36d
|
@ -424,6 +424,7 @@ typedef enum {
|
||||||
SUB_STATE_SUBED,
|
SUB_STATE_SUBED,
|
||||||
SUB_STATE_UNSUBSCRIBE,
|
SUB_STATE_UNSUBSCRIBE,
|
||||||
SUB_STATE_FAILED,
|
SUB_STATE_FAILED,
|
||||||
|
SUB_STATE_FAIL_WAIT,
|
||||||
SUB_STATE_EXPIRED,
|
SUB_STATE_EXPIRED,
|
||||||
SUB_STATE_NOSUB,
|
SUB_STATE_NOSUB,
|
||||||
v_STATE_LAST
|
v_STATE_LAST
|
||||||
|
|
|
@ -4372,8 +4372,6 @@ void sofia_presence_handle_sip_r_subscribe(int status,
|
||||||
default:
|
default:
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "status (%d) != 200, updated state to SUB_STATE_FAILED.\n", status);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "status (%d) != 200, updated state to SUB_STATE_FAILED.\n", status);
|
||||||
gw_sub_ptr->state = SUB_STATE_FAILED;
|
gw_sub_ptr->state = SUB_STATE_FAILED;
|
||||||
gw_sub_ptr->expires = switch_epoch_time_now(NULL);
|
|
||||||
gw_sub_ptr->retry = switch_epoch_time_now(NULL);
|
|
||||||
|
|
||||||
if (!sofia_private) {
|
if (!sofia_private) {
|
||||||
nua_handle_destroy(nh);
|
nua_handle_destroy(nh);
|
||||||
|
|
|
@ -253,6 +253,15 @@ void sofia_sub_check_gateway(sofia_profile_t *profile, time_t now)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SUB_STATE_FAILED:
|
case SUB_STATE_FAILED:
|
||||||
|
gw_sub_ptr->expires = now;
|
||||||
|
gw_sub_ptr->retry = now + gw_sub_ptr->retry_seconds;
|
||||||
|
gw_sub_ptr->state = SUB_STATE_FAIL_WAIT;
|
||||||
|
break;
|
||||||
|
case SUB_STATE_FAIL_WAIT:
|
||||||
|
if (!gw_sub_ptr->retry || now >= gw_sub_ptr->retry) {
|
||||||
|
gw_sub_ptr->state = SUB_STATE_UNSUBED;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case SUB_STATE_TRYING:
|
case SUB_STATE_TRYING:
|
||||||
if (gw_sub_ptr->retry && now >= gw_sub_ptr->retry) {
|
if (gw_sub_ptr->retry && now >= gw_sub_ptr->retry) {
|
||||||
gw_sub_ptr->state = SUB_STATE_UNSUBED;
|
gw_sub_ptr->state = SUB_STATE_UNSUBED;
|
||||||
|
|
Loading…
Reference in New Issue