[OpenSER-Devel] serial forking and nat
Juha Heinanen
jh at tutpro.com
Thu Aug 30 20:50:34 CEST 2007
Juha Heinanen writes:
> each time when t_relay is called (perhaps with a new "serial fork"
> parameter), it would serve the
> next set of branches that have the highest q value and then mark those
> as served in dset.c branches array.
if that is too much to ask, then how about adding an int "status" field
to branch struct and include it also as a new get_branch parameter. in
addition, there would be a new dset.h function that can be used to set
status value of a branch.
initial value of status field for each branch would be zero. when
t_relay is called, it always serves those branches whose status field
value is zero thus retaining backwards compatibility.
next_contacts/next_branches would then be able to do their job by
manipulating status field values. for example, when
load_contacts/serialize_branches is called, it would set "status" of
each branch to 1 (unused). each time next_contacts/next_branches is
called, it would set each zero valued branch to -1 (used) and then
select the highest unused q value branches and set their status field
value to zero. if there is no unused branches left,
next_contacts/next_branches would return -1.
i don't know the internals of tm module, but i would think that adding a
status==0 test before a branch is served, would not be a big deal.
comments?
-- juha
More information about the Devel
mailing list