[Privoxy-users] External filter never executes

Tibor Pataky tpataky at gmail.com
Sun Aug 17 17:25:59 CEST 2025


Hi All,

I've only just recently discovered privoxy and I thought I'll give it a try!
One thing I can't get to work though is external filters (perhaps any
filters at all?).
I stripped down the config as much as possible, my user.action and
user.filter files look like this:
user.action:
{ +external-filter{my-filter} }
/

user.filter:
EXTERNAL-FILTER: my-filter why you no work?
/usr/bin/tee /var/tmp/privoxy/out

When I run privoxy with: --no-daemon /etc/privoxy/config
and run the following: curl --proxy localhost:8118 https://www.privoxy.org/
I get the following output:
2025-08-17 15:01:41.411 7ad19d4f0740 Info: Privoxy version 4.0.0
2025-08-17 15:01:41.411 7ad19d4f0740 Info: Program name:
/workdir/privoxy/privoxy
2025-08-17 15:01:41.413 7ad19d4f0740 Error: Config option single-threaded
disables connection keep-alive.
2025-08-17 15:01:41.413 7ad19d4f0740 Info: Loading filter file:
/etc/privoxy/user.filter
2025-08-17 15:01:41.413 7ad19d4f0740 Re-Filter: Reading in filter
"timed-filter" ("why you no work?")
2025-08-17 15:01:41.413 7ad19d4f0740 Info: Loading actions file:
/etc/privoxy/user.action
2025-08-17 15:01:41.413 7ad19d4f0740 Info: Listening on port 8118 on IP
address 0.0.0.0
2025-08-17 15:01:48.322 7ad19d4f0740 Request: www.privoxy.org:443/
2025-08-17 15:01:48.322 7ad19d4f0740 Actions: +external-filter{my-filter}

This deceptively shows that it executes my-filter, but it never actually
runs the tee command, the file under /var/tmp/privoxy never appeared.

I got to the point where I built privoxy from source (the v_4_0_0 tag) with
debug symbols and ran it under gdb.
I set various breakpoints in handle_established_connection, but couldn't
really figure out what is going wrong. What I noticed is that the variable
buffer_and_filter_content which guards the call to execute_content_filters
is only ever set where it is declared. The main loop in
handle_established_connection exits after a couple of iterations when it
runs onto the break statement at line 3413. As far as I can tell the only
place where buffer_and_filter_content is possibly set to a nonzero value is
in line 4111, but execution never reaches this line.

At this point I'm really out of ideas what to try next...
Is there some extra config I forgot to set to enable external filters?
Is it a header that's behind this?
Is something possibly wrong with the SSL/TLS setup?

What should I check for in gdb?

Kind regards,
Tibor Pataky


More information about the Privoxy-users mailing list