From 52feb95cca9309b54829313054d8f4befabbd028 Mon Sep 17 00:00:00 2001 From: Fabian Keil Date: Wed, 16 Dec 2009 08:35:47 +0000 Subject: [PATCH] Add optional support for FreeBSD's accf_http(9). --- acconfig.h | 5 +++++ configure.in | 10 ++++++++-- jbsockets.c | 8 +++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/acconfig.h b/acconfig.h index b3953b99..3adead6e 100644 --- a/acconfig.h +++ b/acconfig.h @@ -85,6 +85,11 @@ */ #undef FEATURE_ACL +/* + * Allow Privoxy to use accf_http(9) if supported. + */ +#undef FEATURE_ACCEPT_FILTER + /* * Enables the web-based configuration (actionsfile) editor. If you * have a shared proxy, you might want to turn this off. diff --git a/configure.in b/configure.in index d84de501..2658be07 100644 --- a/configure.in +++ b/configure.in @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. dnl -dnl $Id: configure.in,v 1.139 2009/10/24 11:11:33 fabiankeil Exp $ +dnl $Id: configure.in,v 1.140 2009/11/07 13:44:43 fabiankeil Exp $ dnl dnl Written by and Copyright (C) 2001-2009 the dnl Privoxy team. http://www.privoxy.org/ @@ -32,7 +32,7 @@ dnl ================================================================= dnl AutoConf Initialization dnl ================================================================= -AC_REVISION($Revision: 1.139 $) +AC_REVISION($Revision: 1.140 $) AC_INIT(jcc.c) if test ! -f config.h.in; then @@ -848,6 +848,12 @@ AC_ARG_ENABLE(extended-host-patterns, AC_DEFINE(FEATURE_EXTENDED_HOST_PATTERNS) fi]) +AC_ARG_ENABLE(accept-filter, +[ --enable-accept-filter Try to use accf_http(9) if supported.], +[if test $enableval = yes; then + AC_DEFINE(FEATURE_ACCEPT_FILTER) +fi]) + dnl pcre/pcrs is needed for CGI anyway, so dnl the choice is only between static and dnl dynamic: diff --git a/jbsockets.c b/jbsockets.c index ebfea1b5..5de9a54b 100644 --- a/jbsockets.c +++ b/jbsockets.c @@ -1,4 +1,4 @@ -const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.69 2009/12/15 17:41:36 fabiankeil Exp $"; +const char jbsockets_rcs[] = "$Id: jbsockets.c,v 1.70 2009/12/15 17:51:14 fabiankeil Exp $"; /********************************************************************* * * File : $Source: /cvsroot/ijbswa/current/jbsockets.c,v $ @@ -1042,6 +1042,12 @@ int accept_connection(struct client_state * csp, jb_socket fd) #else do { +#if defined(FEATURE_ACCEPT_FILTER) && defined(SO_ACCEPTFILTER) + struct accept_filter_arg af_options; + bzero(&af_options, sizeof(af_options)); + strlcpy(af_options.af_name, "httpready", sizeof(af_options.af_name)); + setsockopt(fd, SOL_SOCKET, SO_ACCEPTFILTER, &af_options, sizeof(af_options)); +#endif afd = accept (fd, (struct sockaddr *) &client, &c_length); } while (afd < 1 && errno == EINTR); if (afd < 0) -- 2.39.2