serialqueue: Fix off-by-one error in retransmit sequence number tracking

Commit 4655a6bf allowed naks to be honored if receive_seq was greater
than the last retransmitted sequence.  However, receive_seq is the
receiver's next sequence number, so a nak should only be processed if
it is one greater than that.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2017-09-07 14:44:55 -04:00
parent 7d17002b33
commit 91b9634198
1 changed files with 2 additions and 2 deletions

View File

@ -609,9 +609,9 @@ retransmit_event(struct serialqueue *sq, double eventtime)
sq->rto *= 2.0;
if (sq->rto > MAX_RTO)
sq->rto = MAX_RTO;
sq->ignore_nak_seq = sq->send_seq - 1;
sq->ignore_nak_seq = sq->send_seq;
}
sq->retransmit_seq = sq->send_seq - 1;
sq->retransmit_seq = sq->send_seq;
sq->rtt_sample_seq = 0;
sq->idle_time = eventtime + buflen * sq->baud_adjust;
double waketime = eventtime + first_buflen * sq->baud_adjust + sq->rto;