|
Lines 2455-2461
Link Here
|
| 2455 |
case TCPS_LAST_ACK: |
2455 |
case TCPS_LAST_ACK: |
| 2456 |
if (SEQ_GT(th->th_ack, tp->snd_max)) { |
2456 |
if (SEQ_GT(th->th_ack, tp->snd_max)) { |
| 2457 |
TCPSTAT_INC(tcps_rcvacktoomuch); |
2457 |
TCPSTAT_INC(tcps_rcvacktoomuch); |
| 2458 |
goto dropafterack; |
2458 |
// This violates RFC 793, which says an unacceptable segment |
|
|
2459 |
// must elicit only an empty acknowledgment segment, but likely |
| 2460 |
// indicates spoofing or a desynchronized TCP state, sending |
| 2461 |
// empty acks won't be helpful in either case |
| 2462 |
goto drop; |
| 2459 |
} |
2463 |
} |
| 2460 |
if ((tp->t_flags & TF_SACK_PERMIT) && |
2464 |
if ((tp->t_flags & TF_SACK_PERMIT) && |
| 2461 |
((to.to_flags & TOF_SACK) || |
2465 |
((to.to_flags & TOF_SACK) || |