[Asterisk-Dev] IAX2 RFC and retries.
Derek Smithies
derek at indranet.co.nz
Fri May 20 15:53:20 MST 2005
Hi
> >>>> But this seems not to be the case. I am seeing acks with timestamps
> >>>> that are the time they were sent, not that of the original message.
> >>>>
> >>
> >>
> >>> I think that asterisk _does_ set the timestamp of an ACK to be equal
> >>> to the timestamp of the frame it's acknowledging, but it's redundant.
> >>>
> >>
> >> This is the sort of thing a formal protocol spec should clear up.
> >> (Bravo to the developer writing RFC--you'll improve a lot of peoples'
> >> productivity!)
This issue can be resolved by reading the code. This is not easy. The code
quality has been discussed before, and I do not wish to revisit that
discussion.
I found it most helpful to examine the packet dumps of iax2 calls, and
examine it with ethereal 0.10.10, which has an uptodate iax2 packet
dissector.
Conclusions: the timestamp of the ACK packet was always equal to the
timestamp of the packet being acked.
A New packet is acknowledged by an ACCEPT packet. the ACCEPT packet has a
different timestamp to the new packet.
There is a bit of code which goes:
if (seqno > -1)
fr->oseqno = seqno; << used for ack frames
else
fr->oseqno = pvt->oseqno++; << ordinary frames
The oseqno of an ACK packet, is equal to the iseqno of the packet being acknowledged.
Derek.
--
Derek Smithies Ph.D.
IndraNet Technologies Ltd.
Email: derek at indranet.co.nz
ph +64 3 365 6485
Web: http://www.indranet-technologies.com/
More information about the asterisk-dev
mailing list