< Previous by Date Date Index Next by Date >
< Previous in Thread Thread Index  

Re: [reSIProcate] About Helper::aBitSmallerThan and ClientSubscription failing to reSUBSCRIBE


Yes this is a bug.  I've committed a fix to SVN head.

Thanks!
Scott

On Wed, May 26, 2010 at 11:28 AM, Francis Joanis <francis.joanis@xxxxxxxxx> wrote:
Hi,

I'm running into an issue where a client subscription does not end up
sending a reSUBSCRIBE after a while.

I was able to zoom in on ClientSubscription::processNextNotify() where
we calculate the value of the UInt32 expires variable. What happens in
my case is that
qn->notify().header(h_SubscriptionState).param(p_expires) is equal to
5, which means that Helper::aBitSmallerThan returns 0.

Since UInt32 expires is thus set to 0, then the reSUBSCRIBE timer
isn't fired near ClientSubscription.cxx:366.

The comment in Helper::aBitSmallerThan says:

/**
 Used by Registration, Publication and Subscription refreshes, to
 calculate the time at which a refresh should be performed (which
 is some time, that is a bit smaller than the Expiration interval).
 The recommended calculation from the RFC's is the minimnum of the
 Exipiration interval less 5 seconds and nine tenths of the exipiration
 interval.
*/

In this case, 5 - 5 = 0. Should Helper::aBitSmallerThan(5) really
return 0 or should we interpret UInt32 expires = 0 as "send the
refresh now" rather than "send the refresh in X seconds"?

Thanks,
Francis
_______________________________________________
resiprocate-devel mailing list
resiprocate-devel@xxxxxxxxxxxxxxx
https://list.resiprocate.org/mailman/listinfo/resiprocate-devel