[commit] r11860 - freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib
Author: mikej Date: Wed Feb 11 11:20:26 2009 New Revision: 11860 Log: Wed Jan 28 12:31:06 CST 2009 Mikhail Zabaluev <mikhail.zabaluev@nokia.com> * su-glib/su_source.c: improved the deferrable timeout calculation Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source.c Modified: freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source.c ============================================================================== --- freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source.c (original) +++ freeswitch/trunk/libs/sofia-sip/libsofia-sip-ua-glib/su-glib/su_source.c Wed Feb 11 11:20:26 2009 @@ -386,7 +386,7 @@ return TRUE; } - if (self->sup_base->sup_timers) { + if (self->sup_base->sup_timers || self->sup_base->sup_deferrable) { su_time_t now; GTimeVal gtimeval; @@ -395,10 +395,18 @@ now.tv_usec = gtimeval.tv_usec; tout = su_timer_next_expires(&self->sup_base->sup_timers, now); - } - if (self->sup_base->sup_deferrable) { - if (tout > self->sup_base->sup_max_defer) - tout = self->sup_base->sup_max_defer; + + if (self->sup_base->sup_deferrable) { + su_duration_t tout_defer; + + tout_defer = su_timer_next_expires(&self->sup_base->sup_deferrable, now); + + if (tout_defer < self->sup_base->sup_max_defer) + tout_defer = self->sup_base->sup_max_defer; + + if (tout > tout_defer) + tout = tout_defer; + } } *return_tout = (tout >= 0 && tout <= (su_duration_t)G_MAXINT)?
participants (1)
-
FreeSWITCH SVN