From owner-freebsd-bugs Fri Apr 14 2:20: 7 2000 Delivered-To: freebsd-bugs@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id D5A9237B5F5 for ; Fri, 14 Apr 2000 02:20:02 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id CAA22204; Fri, 14 Apr 2000 02:20:02 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Date: Fri, 14 Apr 2000 02:20:02 -0700 (PDT) Message-Id: <200004140920.CAA22204@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: Ruslan Ermilov Subject: Re: bin/17963: NATD appears to memory leak when a connection fails from the internal network to the external network. Reply-To: Ruslan Ermilov Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org The following reply was made to PR bin/17963; it has been noted by GNATS. From: Ruslan Ermilov To: brian@pocketscience.com, brian@FreeBSD.org, cmott@scientech.com, net@FreeBSD.org Cc: freebsd-gnats-submit@FreeBSD.org Subject: Re: bin/17963: NATD appears to memory leak when a connection fails from the internal network to the external network. Date: Fri, 14 Apr 2000 12:17:59 +0300 --ZGiS0Q5IWpPtfppv Content-Type: text/plain; charset=us-ascii On Wed, Apr 12, 2000 at 07:18:39PM -0700, brian@pocketscience.com wrote: > [...] > from an internal machine, make several network connections that get > dropped on the remote end (not denied, but connection timeouts) > Please try the following patch. It is for RELENG_3 (latest) sources. Extract patch to the currrent directory, then follow instructions: # mv ./p /tmp # cd /usr/src/lib/libalias # patch data.tcp->state.out != ALIAS_TCP_STATE_CONNECTED) { + if (link->data.tcp->state.out != ALIAS_TCP_STATE_CONNECTED) link->expire_time = TCP_EXPIRE_DEAD; - } else { + else link->expire_time = TCP_EXPIRE_SINGLEDEAD; - } - link->data.tcp->state.in = state; break; case ALIAS_TCP_STATE_CONNECTED: - link->expire_time = TCP_EXPIRE_CONNECTED; - /*FALLTHROUGH*/ - case ALIAS_TCP_STATE_NOT_CONNECTED: - link->data.tcp->state.in = state; + if (link->data.tcp->state.out == ALIAS_TCP_STATE_CONNECTED) + link->expire_time = TCP_EXPIRE_CONNECTED; break; default: abort(); } + link->data.tcp->state.in = state; } @@ -1563,22 +1560,19 @@ SetStateOut(struct alias_link *link, int /* TCP output state */ switch (state) { case ALIAS_TCP_STATE_DISCONNECTED: - if (link->data.tcp->state.in != ALIAS_TCP_STATE_CONNECTED) { + if (link->data.tcp->state.in != ALIAS_TCP_STATE_CONNECTED) link->expire_time = TCP_EXPIRE_DEAD; - } else { + else link->expire_time = TCP_EXPIRE_SINGLEDEAD; - } - link->data.tcp->state.out = state; break; case ALIAS_TCP_STATE_CONNECTED: - link->expire_time = TCP_EXPIRE_CONNECTED; - /*FALLTHROUGH*/ - case ALIAS_TCP_STATE_NOT_CONNECTED: - link->data.tcp->state.out = state; + if (link->data.tcp->state.in == ALIAS_TCP_STATE_CONNECTED) + link->expire_time = TCP_EXPIRE_CONNECTED; break; default: abort(); } + link->data.tcp->state.out = state; } --ZGiS0Q5IWpPtfppv-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message