Submitted by: David Chappell Email: David.Chappell@mail.trincoll.edu This is a patch for Linux version 2.0.25. It fixes a problem which occurs when Linux is sending to an Extended Systems Pock Print Server. The problem is really in the print server, but this patch makes Linux more understanding. *** tcp_output.c.orig Fri Jan 3 10:45:27 1997 --- tcp_output.c Fri Jan 3 10:40:47 1997 *************** *** 459,464 **** --- 459,470 ---- th = (struct tcphdr *)(((char *)iph) + (iph->ihl << 2)); size = ntohs(iph->tot_len) - (iph->ihl<<2); + /* If the remote end has acknowledged the first part + of this segment, don't retransmit that part. Some buggy + TCP implementations won't understand if we do. */ + if (after(sk->rcv_ack_seq,skb->seq+th->syn+th->fin)) + tcp_shrink_skb(sk,skb,sk->rcv_ack_seq); + /* * Note: We ought to check for window limits here but * currently this is done (less efficiently) elsewhere.