From nobody  Thu Oct  8 07:52:27 1998
Received: (from nobody@localhost)
          by hub.freebsd.org (8.8.8/8.8.8) id HAA11131;
          Thu, 8 Oct 1998 07:52:27 -0700 (PDT)
          (envelope-from nobody)
Message-Id: <199810081452.HAA11131@hub.freebsd.org>
Date: Thu, 8 Oct 1998 07:52:27 -0700 (PDT)
From: leo@sai.msu.ru
To: freebsd-gnats-submit@freebsd.org
Subject: Unconected UDP socket declined, if not room for prepending IP/UDP header
X-Send-Pr-Version: www-1.0

>Number:         8206
>Category:       kern
>Synopsis:       [patch] Unconected UDP socket declined, if not room for prepending IP/UDP header
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Oct  8 08:00:00 PDT 1998
>Closed-Date:    Sun Jun 08 10:56:08 PDT 2003
>Last-Modified:  Sun Jun 08 10:56:08 PDT 2003
>Originator:     Serguei E. Leontiev
>Release:        2.2.x
>Organization:
Sternberg Astronomical Institute
>Environment:
FreeBSD ns.sai.msu.ru 2.2.6-980321-BETA FreeBSD 2.2.6-980321-BETA #0: Mon Mar 23 02:22:40 MSK 1998     leo@ns.sai.msu.ru:/var/src/sys/compile/NSALTQ  i386
>Description:
Hi,

Symptom:
  When TCP/IP overload (too enought free mbuf's) UDP service (syslog, 
DNS server, etc.) declined.

Diagnose:
  Unconnected UDP socket declined, because it don't disconetcted (from 
temporarily conect) by M_PREPEND fail's.

System:
  Code with bug use in all versions FreeBSD 2.2.x & 3.x (probably and 
other BSD 4.4Lite OS).

Sorry for my best English.

>How-To-Repeat:
1. Configure syslogd to forwarded messages on other host;
2. Connect this host over slow line (PPP);
3. Start `logger "test message"' in infinite loop;

After error message about "No buffer space available". 
Any syslog's messages don't forwarded on other host.

>Fix:
*** udp_usrreq.c.orig   1997/04/10 19:14:45
--- udp_usrreq.c        1998/10/07 13:38:08     
***************
*** 407,414 ****
        M_PREPEND(m, sizeof(struct udpiphdr), M_DONTWAIT);
        if (m == 0) {
                error = ENOBUFS;
!               if (addr)
                        splx(s);
                goto release;
        }

--- 407,417 ----
        M_PREPEND(m, sizeof(struct udpiphdr), M_DONTWAIT);
        if (m == 0) {
                error = ENOBUFS;
!               if (addr) {
!                       in_pcbdisconnect(inp);
!                       inp->inp_laddr = laddr;
                        splx(s);
+               }
                goto release;
        }


>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->feedback 
State-Changed-By: iedowse 
State-Changed-When: Sat Jan 19 14:45:00 PST 2002 
State-Changed-Why:  

Does this problem still exist in more recent releases? 

http://www.FreeBSD.org/cgi/query-pr.cgi?pr=8206 
State-Changed-From-To: feedback->open 
State-Changed-By: ceri 
State-Changed-When: Sun Jun 8 10:55:19 PDT 2003 
State-Changed-Why:  
Feedback has been requested and received; throw this PR back open. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=8206 
State-Changed-From-To: open->closed 
State-Changed-By: ceri 
State-Changed-When: Sun Jun 8 10:55:46 PDT 2003 
State-Changed-Why:  
Feedback timeout, rather. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=8206 
>Unformatted:
