#include "miscutil.h"
#include "errlog.h"
#include "parsers.h"
+#include "urlmatch.h"
struct client_specific_tag
{
if (enabled_tags->end_of_life && (enabled_tags->end_of_life < now))
{
struct client_specific_tag *next_tag = enabled_tags->next;
- log_error(LOG_LEVEL_INFO,
- "Tag '%s' for client %s expired %u seconds ago. Deleting it.",
+ log_error(LOG_LEVEL_TAGGING,
+ "Tag '%s' for client %s expired %ld seconds ago. Deleting it.",
enabled_tags->name, client_address,
(now - enabled_tags->end_of_life));
remove_tag_for_client(client_address, enabled_tags->name);
}
else
{
+ log_error(LOG_LEVEL_TAGGING, "Enlisting tag '%s' for client %s.",
+ enabled_tags->name, client_address);
enlist(tag_list, enabled_tags->name);
}
enabled_tags = enabled_tags->next;
enabled_tags = get_tags_for_client(client_address);
while (enabled_tags != NULL)
{
- log_error(LOG_LEVEL_CGI, "Evaluating tag '%s' for client %s. End of life %d",
+ log_error(LOG_LEVEL_TAGGING,
+ "Evaluating tag '%s' for client %s. End of life %ld.",
enabled_tags->name, client_address, enabled_tags->end_of_life);
if (enabled_tags->end_of_life)
{
time_t time_left = enabled_tags->end_of_life - now;
/* Add a second to make sure the tag will have expired */
time_left++;
- log_error(LOG_LEVEL_CGI, "%d > %d?", next_timeout, time_left);
+ log_error(LOG_LEVEL_CGI, "%ld > %ld?", next_timeout, time_left);
if (next_timeout == 0 || next_timeout > time_left)
{
next_timeout = time_left;
privoxy_mutex_unlock(&client_tags_mutex);
- log_error(LOG_LEVEL_CGI, "Next timeout in %d seconds", next_timeout);
+ log_error(LOG_LEVEL_CGI, "Next timeout in %ld seconds", next_timeout);
return next_timeout;
/* Client has preceding client */
clients_with_tags->prev->next = clients_with_tags->next;
}
- freez(clients_with_tags->client);
if (clients_with_tags == requested_tags)
{
- /* Removing last tag */
- freez(requested_tags);
- clients_with_tags = requested_tags;
- }
- else
- {
- freez(clients_with_tags);
+ /*
+ * We're in the process of removing the last tag,
+ * mark the global list as empty.
+ */
+ requested_tags = NULL;
}
+ freez(clients_with_tags->client);
+ freez(clients_with_tags);
}
freez(enabled_tags->name);
freez(enabled_tags);
if (client_has_requested_tag(csp->client_address, tag_name))
{
- log_error(LOG_LEVEL_ERROR,
- "Tag '%s' already enabled for client '%s'", tag->name, csp->client_address);
+ log_error(LOG_LEVEL_TAGGING,
+ "Tag '%s' already enabled for client '%s'.",
+ tag->name, csp->client_address);
}
else
{
add_tag_for_client(csp->client_address, tag_name, time_to_live);
- log_error(LOG_LEVEL_INFO,
- "Tag '%s' enabled for client '%s'. TTL: %d.",
+ log_error(LOG_LEVEL_TAGGING,
+ "Tag '%s' enabled for client '%s'. TTL: %ld.",
tag->name, csp->client_address, time_to_live);
}
if (client_has_requested_tag(csp->client_address, tag_name))
{
remove_tag_for_client(csp->client_address, tag_name);
- log_error(LOG_LEVEL_INFO,
- "Tag '%s' disabled for client '%s'", tag->name, csp->client_address);
+ log_error(LOG_LEVEL_TAGGING,
+ "Tag '%s' disabled for client '%s'.", tag->name, csp->client_address);
}
else
{
- log_error(LOG_LEVEL_ERROR,
- "Tag '%s' currently not set for client '%s'",
+ log_error(LOG_LEVEL_TAGGING,
+ "Tag '%s' currently not set for client '%s'.",
tag->name, csp->client_address);
}
for (tag = tags->first; tag != NULL; tag = tag->next)
{
- if (0 == regexec(pattern->pattern.tag_regex, tag->str, 0, NULL, 0))
+ if (regex_matches(pattern->pattern.tag_regex, tag->str))
{
+ log_error(LOG_LEVEL_TAGGING, "Client tag '%s' matches.", tag->str);
return 1;
}
}