lwip-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-devel] [bug #28241] oos processing


From: Oleg Tyshev
Subject: [lwip-devel] [bug #28241] oos processing
Date: Wed, 09 Dec 2009 15:36:49 +0000
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 GTB5

URL:
  <http://savannah.nongnu.org/bugs/?28241>

                 Summary: oos processing
                 Project: lwIP - A Lightweight TCP/IP stack
            Submitted by: olegreen
            Submitted on: Wed 09 Dec 2009 03:36:48 PM GMT
                Category: TCP
                Severity: 3 - Normal
              Item Group: Change Request
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
         Planned Release: 
            lwIP version: CVS Head

    _______________________________________________________

Details:

In function tcp_oos_insert_segment()
some segments covered with new segment are deleted.
It would be better instead of

    while (next &&
           TCP_SEQ_GT((seqno + cseg->len),
                      (next->tcphdr->seqno + next->len))) {
      struct tcp_seg *old_seg = next;
      next = next->next;
      tcp_seg_free(old_seg);
    }

write

     while (next &&
-           TCP_SEQ_GT((seqno + cseg->len),
+           TCP_SEQ_GEQ((seqno + cseg->len),
                       (next->tcphdr->seqno + next->len))) {
       struct tcp_seg *old_seg = next;
       next = next->next;
       tcp_seg_free(old_seg);
     }



or if we don't want to lose FIN flag

     while (next &&
-           TCP_SEQ_GT((seqno + cseg->len),
+           TCP_SEQ_GEQ((seqno + cseg->len),
                       (next->tcphdr->seqno + next->len))) {
+      /* cseg with FIN already processed */
+      if (TCPH_FLAGS(next->mpTcpHdr) & TCP_FIN) {
+        TCPH_FLAGS_SET(cseg->tcphdr, TCPH_FLAGS(cseg->tcphdr) & ~TCP_FIN);
+      }
       struct tcp_seg *old_seg = next;
       next = next->next;
       tcp_seg_free(old_seg);
     }





    _______________________________________________________

File Attachments:


-------------------------------------------------------
Date: Wed 09 Dec 2009 03:36:48 PM GMT  Name: oos_ins.patch  Size: 790B   By:
olegreen

<http://savannah.nongnu.org/bugs/download.php?file_id=19226>

    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/bugs/?28241>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.nongnu.org/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]