-const char filters_rcs[] = "$Id: filters.c,v 1.61 2006/08/03 02:46:41 david__schmidt Exp $";
+const char filters_rcs[] = "$Id: filters.c,v 1.65 2006/09/21 12:54:43 fabiankeil Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/filters.c,v $
*
* Revisions :
* $Log: filters.c,v $
+ * Revision 1.65 2006/09/21 12:54:43 fabiankeil
+ * Fix +redirect{}. Didn't work with -fast-redirects.
+ *
+ * Revision 1.64 2006/08/31 10:55:49 fabiankeil
+ * Block requests for untrusted URLs with status
+ * code 403 instead of 200.
+ *
+ * Revision 1.63 2006/08/31 10:11:28 fabiankeil
+ * Don't free p which is still in use and will be later
+ * freed by free_map(). Don't claim the referrer is unknown
+ * when the client didn't set one.
+ *
+ * Revision 1.62 2006/08/14 00:27:47 david__schmidt
+ * Feature request 595948: Re-Filter logging in single line
+ *
* Revision 1.61 2006/08/03 02:46:41 david__schmidt
* Incorporate Fabian Keil's patch work:\rhttp://www.fabiankeil.de/sourcecode/privoxy/
*
if (((csp->action->flags & ACTION_IMAGE_BLOCKER) != 0)
&& is_imageurl(csp))
{
- char *p;
+ char *p;
/* determine HOW images should be blocked */
p = csp->action->string[ACTION_STRING_IMAGE_BLOCKER];
* Function : trust_url FIXME: I should be called distrust_url
*
* Description : Calls is_untrusted_url to determine if the URL is trusted
- * and if not, returns a HTTP 304 response with a reject message.
+ * and if not, returns a HTTP 403 response with a reject message.
*
* Parameters :
* 1 : csp = Current client state (buffers, headers, etc...)
return cgi_error_memory();
}
+ rsp->status = strdup("403 Request blocked by Privoxy");
exports = default_exports(csp, NULL);
- if (exports == NULL)
+ if (exports == NULL || rsp->status == NULL)
{
free_http_response(rsp);
return cgi_error_memory();
}
else
{
- if (!err) err = map(exports, "referrer", 1, "unknown", 1);
+ if (!err) err = map(exports, "referrer", 1, "none set", 1);
}
if (err)
string_append(&p, buf);
}
err = map(exports, "trusted-referrers", 1, p, 0);
- freez(p);
if (err)
{
string_append(&p, buf);
}
err = map(exports, "trust-info", 1, p, 0);
- freez(p);
}
else
{
{
q = csp->action->string[ACTION_STRING_REDIRECT];
}
- else
+ else if ((csp->action->flags & ACTION_FAST_REDIRECTS))
{
redirect_mode = csp->action->string[ACTION_STRING_FAST_REDIRECTS];
if (0 == strcmpic(redirect_mode, "check-decoded-url"))
q = p++;
}
}
+ else
+ {
+ /* All redirection actions are disabled */
+ return NULL;
+ }
/*
* if there was any, generate and return a HTTP redirect
*/