lwip-devel
[Top][All Lists]
Advanced

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

[lwip-devel] [bug #43192] tcp_enqueue_flags() should TCP_SND_QUEUELEN wh


From: Albert Huitsing
Subject: [lwip-devel] [bug #43192] tcp_enqueue_flags() should TCP_SND_QUEUELEN when sending FIN
Date: Thu, 11 Sep 2014 09:22:12 +0000
User-agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0

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

                 Summary: tcp_enqueue_flags() should TCP_SND_QUEUELEN when
sending FIN
                 Project: lwIP - A Lightweight TCP/IP stack
            Submitted by: ajhuitsing
            Submitted on: Thu 11 Sep 2014 09:22:11 AM GMT
                Category: TCP
                Severity: 3 - Normal
              Item Group: Faulty Behaviour
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
         Planned Release: 
            lwIP version: git head

    _______________________________________________________

Details:

in tcp_out.c() : tcp_enqueue_flags()

if ((pcb->snd_queuelen >= TCP_SND_QUEUELEN) || (pcb->snd_queuelen >
TCP_SNDQUEUELEN_OVERFLOW)) {
    LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 3, ("tcp_enqueue_flags: too long queue
%"U16_F" (max %"U16_F")\n",
                                       pcb->snd_queuelen, TCP_SND_QUEUELEN));

will cause hangup in some cases, which can be partially fixed by:

if ((pcb->snd_queuelen > TCP_SND_QUEUELEN) || (pcb->snd_queuelen >
TCP_SNDQUEUELEN_OVERFLOW)) {
    LWIP_DEBUGF(TCP_OUTPUT_DEBUG | 3, ("tcp_enqueue_flags: too long queue
%"U16_F" (max %"U16_F")\n",
                                       pcb->snd_queuelen, TCP_SND_QUEUELEN));



but this seems not the entire solution:


quote from Simon on this bug by email:

"This seems like a bug in lwIP, but your fix is not really correct. It might
solve your specific problem, but only because of your current
pcb->snd_queuelen state. A more general fix might have to detect that only a
FIN should be enqueued and ignore the TCP_SND_QUEUELEN counter in this case."


but I'm not deep enough into LWIP for that...




    _______________________________________________________

Reply to this item at:

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

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




reply via email to

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