[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