On 12/6/12 1:35 PM, Juha Heinanen wrote:
Daniel-Constantin Mierla writes:
This one can be also easily added, we have t_load_contacts() which serializes the contact records based on Q value. It has to be extended to work on reg-id:
since i have implemented t_load_contacts()/t_next_contacts(), perhaps i can help here. tell me what kind of extension is needed and i'll try to implement it.
that would be great!
I haven't studied exactly the algorithm, but from what I understood, the contacts have to be sorted also by reg-id. What is not clear yet for me is if Q values still plays a role.
First, it will require to propagate sip-instance and reg-id fields to destination set (via branch_t structure) from usrloc/registrar -- just adding some fields and copy the values as we do for example for path and q.
If Q has to be taken in consideration, I would guess that the list of contacts will be grouped by sip-instance value, those groups will be ordered by Q (like taking the highest q in the group and comparing with the other groups). Inside the group, the order will be set by reg-id.
Selection of next destinations to try will be done by taking the first within a group with same instance (perhaps doing parallel forking if there are groups with same Q). If it is a failure, then will go and take the next contacts in the groups (based on reg-id value).
Again, the part related to Q has to be clarified. Otherwise should be about grouping on sip-instance and ordering by reg-id (lower reg-id is first to use).
Thinking of these attributes, might be easier to work with xavps instead of classic avps.
Cheers, Daniel