@ -2013,6 +2013,8 @@ static enum sip_result __sip_reliable_xmit(struct sip_pvt *p, int seqno, int res
siptimer_a = pkt - > timer_t1 * 2 ;
siptimer_a = pkt - > timer_t1 * 2 ;
/* Schedule retransmission */
/* Schedule retransmission */
if ( pkt - > retransid > - 1 )
ast_sched_del ( sched , pkt - > retransid ) ;
pkt - > retransid = ast_sched_add_variable ( sched , siptimer_a , retrans_pkt , pkt , 1 ) ;
pkt - > retransid = ast_sched_add_variable ( sched , siptimer_a , retrans_pkt , pkt , 1 ) ;
if ( option_debug > 3 & & sipdebug )
if ( option_debug > 3 & & sipdebug )
ast_log ( LOG_DEBUG , " *** SIP TIMER: Initalizing retransmit timer on packet: Id #%d \n " , pkt - > retransid ) ;
ast_log ( LOG_DEBUG , " *** SIP TIMER: Initalizing retransmit timer on packet: Id #%d \n " , pkt - > retransid ) ;
@ -2954,6 +2956,8 @@ static int sip_call(struct ast_channel *ast, char *dest, int timeout)
p - > invitestate = INV_CALLING ;
p - > invitestate = INV_CALLING ;
/* Initialize auto-congest time */
/* Initialize auto-congest time */
if ( p - > initid > - 1 )
ast_sched_del ( sched , p - > initid ) ;
p - > initid = ast_sched_add ( sched , p - > maxtime ? ( p - > maxtime * 4 ) : SIP_TRANS_TIMEOUT , auto_congest , p ) ;
p - > initid = ast_sched_add ( sched , p - > maxtime ? ( p - > maxtime * 4 ) : SIP_TRANS_TIMEOUT , auto_congest , p ) ;
}
}
}
}
@ -12268,7 +12272,9 @@ static int handle_response_register(struct sip_pvt *p, int resp, char *rest, str
r - > refresh = ( int ) expires_ms / 1000 ;
r - > refresh = ( int ) expires_ms / 1000 ;
/* Schedule re-registration before we expire */
/* Schedule re-registration before we expire */
r - > expire = ast_sched_add ( sched , expires_ms , sip_reregister , r ) ;
if ( r - > expire > - 1 )
ast_sched_del ( sched , r - > expire ) ;
r - > expire = ast_sched_add ( sched , expires_ms , sip_reregister , r ) ;
ASTOBJ_UNREF ( r , sip_registry_destroy ) ;
ASTOBJ_UNREF ( r , sip_registry_destroy ) ;
}
}
return 1 ;
return 1 ;
@ -15422,6 +15428,8 @@ static int sip_poke_noanswer(void *data)
peer - > lastms = - 1 ;
peer - > lastms = - 1 ;
ast_device_state_changed ( " SIP/%s " , peer - > name ) ;
ast_device_state_changed ( " SIP/%s " , peer - > name ) ;
/* Try again quickly */
/* Try again quickly */
if ( peer - > pokeexpire > - 1 )
ast_sched_del ( sched , peer - > pokeexpire ) ;
peer - > pokeexpire = ast_sched_add ( sched , DEFAULT_FREQ_NOTOK , sip_poke_peer_s , peer ) ;
peer - > pokeexpire = ast_sched_add ( sched , DEFAULT_FREQ_NOTOK , sip_poke_peer_s , peer ) ;
return 0 ;
return 0 ;
}
}
@ -15485,8 +15493,11 @@ static int sip_poke_peer(struct sip_peer *peer)
gettimeofday ( & peer - > ps , NULL ) ;
gettimeofday ( & peer - > ps , NULL ) ;
if ( xmitres = = XMIT_ERROR )
if ( xmitres = = XMIT_ERROR )
sip_poke_noanswer ( peer ) ; /* Immediately unreachable, network problems */
sip_poke_noanswer ( peer ) ; /* Immediately unreachable, network problems */
else
else {
if ( peer - > pokeexpire > - 1 )
ast_sched_del ( sched , peer - > pokeexpire ) ;
peer - > pokeexpire = ast_sched_add ( sched , DEFAULT_MAXMS * 2 , sip_poke_noanswer , peer ) ;
peer - > pokeexpire = ast_sched_add ( sched , DEFAULT_MAXMS * 2 , sip_poke_noanswer , peer ) ;
}
return 0 ;
return 0 ;
}
}