Hi, On Thu, Oct 13, 2011 at 11:19 AM, <noreply@xxxxxxxxxxxxx> wrote: > ------------------------------------------------------------ > revno: 6088 > committer: Rene Hummen <rene.hummen@xxxxxxxxxxxxxxxxx> > In some situations, the network stack of the responder cannot deliver > HIP UPDATE messages to the signaled locators. In this case, sendto() > returns a length != packet_length. Until now, HIPL tried three times > to send undeliverable packets with a timeout of 2 seconds each. As the > hipd is single-threaded, this caused a delay of 4+ seconds per > undeliverable locator. > HIPL also implements a retransmission mechanisms (for UPDATEs). > Undeliverable packets are handled there as well. Hence, I removed the > intrusive special handling for the case where the network stack reports > an error. This fixes the problem of overly long handovers. a problem may be that per host association only the last sent packet is cached for retransmission. So when you send two locators and the first one fails, the failed one will never be retransmitted as the cache is overwritten by the second one. At least that's how I understand it works in HIPL. The respective code is in the same function as well, see the call to hip_queue_packet() in line 1300ff. in hip_send_raw_from_one_src() in hipd/output.c. David