static int nict_on_timer_E(belle_sip_nict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; const belle_sip_timer_config_t *cfg=belle_sip_transaction_get_timer_config(base); switch(base->state){ case BELLE_SIP_TRANSACTION_TRYING: { /*reset the timer */ unsigned int prev_timeout=belle_sip_source_get_timeout(obj->timer_E); belle_sip_source_set_timeout(obj->timer_E,MIN(2*prev_timeout,(unsigned int)cfg->T2)); belle_sip_message("nict_on_timer_E: sending retransmission"); belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)base->request); } break; case BELLE_SIP_TRANSACTION_PROCEEDING: belle_sip_source_set_timeout(obj->timer_E,cfg->T2); belle_sip_message("nict_on_timer_E: sending retransmission"); belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)base->request); break; default: /*if we are not in these cases, timer_E does nothing, so remove it*/ return BELLE_SIP_STOP; break; } return BELLE_SIP_CONTINUE; }
static int dialog_on_200Ok_timer(belle_sip_dialog_t *dialog){ /*reset the timer */ const belle_sip_timer_config_t *cfg=belle_sip_stack_get_timer_config(dialog->provider->stack); unsigned int prev_timeout=belle_sip_source_get_timeout(dialog->timer_200Ok); belle_sip_source_set_timeout(dialog->timer_200Ok,MIN(2*prev_timeout,(unsigned int)cfg->T2)); belle_sip_message("Dialog sending retransmission of 200Ok"); belle_sip_provider_send_response(dialog->provider,dialog->last_200Ok); return BELLE_SIP_CONTINUE; }
static int ict_on_timer_A(belle_sip_ict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; switch(base->state){ case BELLE_SIP_TRANSACTION_CALLING: { /*reset the timer to twice the previous value, and retransmit */ unsigned int prev_timeout=belle_sip_source_get_timeout(obj->timer_A); belle_sip_source_set_timeout(obj->timer_A,2*prev_timeout); belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)base->request); } break; default: break; } return BELLE_SIP_CONTINUE; }
int belle_sip_listening_point_get_keep_alive(const belle_sip_listening_point_t *lp) { return lp->keep_alive_timer?belle_sip_source_get_timeout(lp->keep_alive_timer):-1; }