static void process_timeout(void *user_ctx, const belle_sip_timeout_event_t *event) { belle_sip_client_transaction_t* client_transaction = belle_sip_timeout_event_get_client_transaction(event); SalOp* op = (SalOp*)belle_sip_transaction_get_application_data(BELLE_SIP_TRANSACTION(client_transaction)); if (op && op->callbacks.process_timeout) { op->callbacks.process_timeout(op,event); } else { ms_error("Unhandled event timeout [%p]",event); } }
static void process_timeout(belle_sip_listener_t *user_ctx, const belle_sip_timeout_event_t *event) { belle_sip_refresher_t* refresher=(belle_sip_refresher_t*)user_ctx; belle_sip_client_transaction_t*client_transaction =belle_sip_timeout_event_get_client_transaction(event); if (refresher && (client_transaction !=refresher->transaction)) return; /*not for me*/ if (refresher->state==started) { /*retry in 2 seconds but not immediately to let the current transaction be cleaned*/ schedule_timer_at(refresher,2000,RETRY); } if (refresher->listener) refresher->listener(refresher,refresher->user_data,408, "timeout"); }