diff options
-rw-r--r-- | pjsip/src/pjsip-simple/evsub.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/pjsip/src/pjsip-simple/evsub.c b/pjsip/src/pjsip-simple/evsub.c index c393470c..aa2498c4 100644 --- a/pjsip/src/pjsip-simple/evsub.c +++ b/pjsip/src/pjsip-simple/evsub.c @@ -32,6 +32,7 @@ #include <pj/log.h> #include <pj/os.h> #include <pj/pool.h> +#include <pj/rand.h> #include <pj/string.h> @@ -1749,6 +1750,10 @@ static void on_tsx_state_uac( pjsip_evsub *sub, pjsip_transaction *tsx, unsigned timeout = (sub->expires->ivalue > TIME_UAC_REFRESH) ? sub->expires->ivalue - TIME_UAC_REFRESH : sub->expires->ivalue; + /* Reduce timeout by about 1 - 10 secs (randomized) */ + if (timeout > 10) + timeout += -10 + (pj_rand() % 10); + PJ_LOG(5,(sub->obj_name, "Will refresh in %d seconds", timeout)); set_timer(sub, TIMER_TYPE_UAC_REFRESH, timeout); |