From owner-freebsd-stable Sat Jul 29 20: 6:17 2000 Delivered-To: freebsd-stable@freebsd.org Received: from elvis.mu.org (elvis.mu.org [207.154.226.10]) by hub.freebsd.org (Postfix) with ESMTP id 1AD4437B590 for ; Sat, 29 Jul 2000 20:06:14 -0700 (PDT) (envelope-from paul@elvis.mu.org) Received: by elvis.mu.org (Postfix, from userid 1000) id 546842B22F; Sat, 29 Jul 2000 22:06:03 -0500 (CDT) Date: Sat, 29 Jul 2000 20:06:03 -0700 From: Paul Saab To: new-httpd@apache.org, freebsd-stable@FreeBSD.ORG Cc: Alfred Perlstein , ym g Subject: Re: Zen regarding accept filters Message-ID: <20000729200603.A15316@elvis.mu.org> References: <20000729130953.10802.qmail@graffiti.net> <20000729104309.D21967@fw.wintelcom.net> <20000730023025.B1386@hand.dotat.at> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2i In-Reply-To: <20000730023025.B1386@hand.dotat.at>; from dot@dotat.at on Sun, Jul 30, 2000 at 02:30:25AM +0000 Sender: owner-freebsd-stable@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG This should also incorporate a check for __FreeBSD_version >= 410001. Also, the fact that it breaks HTTP/0.9 isn't really a big deal if you are going to enable this feature. Also, the code path for this is meant to be quick and trying to make it support HTTP/0.9 will probably not be worth the effort since this is done for performance and it really does make a large difference on heavy hit sites. If a browser only support HTTP/0.9, then I doubt they will be able to even view most modern website. -- Paul Saab Technical Yahoo paul@mu.org - ps@yahoo-inc.com - ps@freebsd.org Do You .. uhh .. Yahoo!? Tony Finch (dot@dotat.at) wrote: > [I've crossposted this to new-httpd@apache.org and freebsd-stable@freebsd.org] > > The patch to enable accept filters in Apache is quite simple (see > below) but unfortunately the httpready filter breaks support for > HTTP/0.9. I'm going to try to fix it but until that is done I don't > think the patch should go into Apache without alerting people to this > fact and making them define BREAK_OLD_HTTP at compile time... > > Tony. > -- > en oeccget g mtcaa f.a.n.finch > v spdlkishrhtewe y dot@dotat.at > eatp o v eiti i d. fanf@covalent.net > > > --- apache-1.3/src/main/http_main.c 2000/07/29 23:56:19 1.507 > +++ apache-1.3/src/main/http_main.c 2000/07/30 02:26:25 > @@ -3398,6 +3398,34 @@ > exit(1); > } > > +#if defined(SO_ACCEPTFILTER) && defined(BREAK_OLD_HTTP) > + { > + /* > + * FreeBSD has a feature called "accept filters" which delay the > + * return from accept() until a condition has been met, e.g. an > + * HTTP request has arrived. This postpones the requirement for a > + * child process to handle the new connection which therefore > + * increases the number of connections that a given number of > + * child processes can handle. It also allows a child process to > + * accomplish more immediately after accept() returns (because the > + * request is already available to be read) so there is less > + * context switching. This feature was added to FreeBSD-4.1-STABLE > + * on the 28th of July 2000. > + */ > + struct accept_filter_arg af = { > + "httpready", "" > + }; > + if (setsockopt(s, SOL_SOCKET, SO_ACCEPTFILTER, &af, sizeof(af)) < 0) { > + ap_log_error(APLOG_MARK, APLOG_CRIT, server_conf, > + "make_sock: for %s, setsockopt: (SO_ACCEPTFILTER)", > + addr); > + close(s); > + ap_unblock_alarms(); > + exit(1); > + } > + } > +#endif > + > #ifdef WORKAROUND_SOLARIS_BUG > s = ap_slack(s, AP_SLACK_HIGH); > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-stable" in the body of the message