Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Mar 2001 23:38:54 -0800
From:      Alfred Perlstein <bright@wintelcom.net>
To:        Blaz Zupan <blaz@amis.net>
Cc:        hackers@FreeBSD.ORG, jlemon@FreeBSD.ORG
Subject:   Re: PATCH: workaround for FreeBSD 4.2-STABLE (fwd)
Message-ID:  <20010307233854.A18351@fw.wintelcom.net>
In-Reply-To: <Pine.BSF.4.33.0103080804200.61740-100000@titanic.medinet.si>; from blaz@amis.net on Thu, Mar 08, 2001 at 08:04:57AM %2B0100
References:  <Pine.BSF.4.33.0103080804200.61740-100000@titanic.medinet.si>

next in thread | previous in thread | raw e-mail | index | archive | help
cc'd J Lemon because I think he's the one that made do the
ECONNABORTED (sp?)

* Blaz Zupan <blaz@amis.net> [010307 23:05] wrote:
> Anybody know which bug Wietse is talking about?

It could be a mistake, but it seems like there might be a problem
if:

client connects to server
client sends data
client closes socket
server tries an accept

It looks like the server won't get the buffered data, only a
notification that a connection aborted when in reality it was just
close()'d by the client before accept() could be called by the
server.

Jonathan, is this possible?


> 
> Blaz Zupan,  Medinet d.o.o, Linhartova 21, 2000 Maribor, Slovenia
> E-mail: blaz@amis.net, Tel: +386-2-320-6320, Fax: +386-2-320-6325
> 
> ---------- Forwarded message ----------
> Date: Wed, 7 Mar 2001 10:49:52 -0500 (EST)
> From: Wietse Venema <wietse@porcupine.org>
> To: Postfix users <postfix-users@postfix.org>
> Subject: PATCH: workaround for FreeBSD 4.2-STABLE
> 
> This is an UNTESTED workaround for an incompatible change in FreeBSD
> 4.2-STABLE that causes data to be lost when a client close()s a
> socket before the server has accept()ed the connection. This screws
> up the Postfix flush service, and may make some parts of Postfix
> fail randomly under a heavy system load.
> 
> The UNTESTED workaround causes the client to wait until the server
> closes the connection first. This makes Postfix slower than necessary.
> 
> The workaround is UNTESTED because I have no time to download and
> install FreeBSD 4.2-STABLE.
> 
> To compile this UNTESTED workaround:
> 
>     [ apply patch ]
>     % make makefiles CCARGS=-DBROKEN_FREEBSD_ACCEPT
>     % make
>     % su
>     [ type your root password here ]
>     # make install </dev/null
> 
> Someone can tell the list if this UNTESTED workaround actually works.
> 
> 	Wietse
> 
> *** ./unix_trigger.c-	Sun Mar 21 20:42:20 1999
> --- ./unix_trigger.c	Wed Mar  7 10:40:29 2001
> ***************
> *** 79,84 ****
> --- 79,90 ----
>   	if (msg_verbose)
>   	    msg_warn("%s: write to %s: %m", myname, service);
> 
> + #ifdef BROKEN_FREEBSD_ACCEPT
> +     if (shutdown(fd, 1) < 0)
> + 	msg_fatal("shutdown: %m");
> +     read_wait(fd, -1);
> + #endif
> +
>       /*
>        * Disconnect.
>        */
> *** ./inet_trigger.c-	Fri Dec 11 13:55:36 1998
> --- ./inet_trigger.c	Wed Mar  7 10:39:53 2001
> ***************
> *** 81,86 ****
> --- 81,92 ----
>   	if (msg_verbose)
>   	    msg_warn("%s: write to %s: %m", myname, service);
> 
> + #ifdef BROKEN_FREEBSD_ACCEPT
> +     if (shutdown(fd, 1) < 0)
> + 	msg_fatal("shutdown: %m");
> +     read_wait(fd, -1);
> + #endif
> +
>       /*
>        * Disconnect.
>        */
> *** ./sane_accept.c-	Sun Mar 21 20:25:52 1999
> --- ./sane_accept.c	Wed Mar  7 10:32:59 2001
> ***************
> *** 53,58 ****
> --- 53,61 ----
>   	ENETUNREACH,
>   	ENOTCONN,
>   	EWOULDBLOCK,
> + #ifdef BROKEN_FREEBSD_ACCEPT
> + 	ECONNABORTED,
> + #endif
>   	0,
>       };
>       int     count;
> 
> 
> 
> 
> 
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe freebsd-hackers" in the body of the message

-- 
-Alfred Perlstein - [bright@wintelcom.net|alfred@freebsd.org]

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010307233854.A18351>