diff --git a/libs/sofia-sip/.update b/libs/sofia-sip/.update index e31494d7e6..cdaf08ad99 100644 --- a/libs/sofia-sip/.update +++ b/libs/sofia-sip/.update @@ -1 +1 @@ -Wed Feb 11 11:18:06 CST 2009 +Wed Feb 11 11:18:29 CST 2009 diff --git a/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source.c b/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source.c index 7c5f79581c..f9467e49f3 100644 --- a/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source.c +++ b/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source.c @@ -394,7 +394,7 @@ gboolean su_source_prepare(GSource *gs, gint *return_tout) now.tv_sec = gtimeval.tv_sec + 2208988800UL; now.tv_usec = gtimeval.tv_usec; - tout = su_timer_next_expires(self->sup_base->sup_timers, now); + tout = su_timer_next_expires(&self->sup_base->sup_timers, now); *return_tout = (tout < 0 || tout > (su_duration_t)G_MAXINT)? -1 : (gint)tout; diff --git a/libs/sofia-sip/libsofia-sip-ua/su/su_port.h b/libs/sofia-sip/libsofia-sip-ua/su/su_port.h index 092cfbdf65..0ecc0f6097 100644 --- a/libs/sofia-sip/libsofia-sip-ua/su/su_port.h +++ b/libs/sofia-sip/libsofia-sip-ua/su/su_port.h @@ -166,7 +166,7 @@ SOFIAPUBFUN su_port_t *su_port_create(void) /* Extension from >= 1.12.5 */ SOFIAPUBFUN void su_msg_delivery_report(su_msg_r msg); -SOFIAPUBFUN su_duration_t su_timer_next_expires(su_timer_t const * t, +SOFIAPUBFUN su_duration_t su_timer_next_expires(su_timer_queue_t const *timers, su_time_t now); SOFIAPUBFUN su_root_t *su_root_create_with_port(su_root_magic_t *magic, su_port_t *port) diff --git a/libs/sofia-sip/libsofia-sip-ua/su/su_timer.c b/libs/sofia-sip/libsofia-sip-ua/su/su_timer.c index e24af4e7b6..f60958a6da 100644 --- a/libs/sofia-sip/libsofia-sip-ua/su/su_timer.c +++ b/libs/sofia-sip/libsofia-sip-ua/su/su_timer.c @@ -581,25 +581,22 @@ int su_timer_expire(su_timer_queue_t * const timers, /** Calculate duration in milliseconds until next timer expires. */ -su_duration_t su_timer_next_expires(su_timer_t const * t, su_time_t now) +su_duration_t su_timer_next_expires(su_timer_queue_t const *timers, + su_time_t now) { - su_timer_queue_t *timers; + su_duration_t next = SU_DURATION_MAX; - su_duration_t tout; + su_timer_t const *t; - if (!t) - return SU_DURATION_MAX; + t = timers ? timers_get(timers[0], 1) : NULL; - timers = su_task_timers(t->sut_task); + if (t) { + next = su_duration(t->sut_when, now); + if (next < 0) + next = 0; + } - t = timers ? timers_get(timers[0], 1) : NULL; - - if (!t) - return SU_DURATION_MAX; - - tout = su_duration(t->sut_when, now); - - return tout > 0 ? tout : 0 ; + return next; } /**