rspamd_process_html_url (rspamd_mempool_t *pool, struct rspamd_url *url,
GHashTable *target)
{
- struct rspamd_url *query_url;
+ struct rspamd_url *query_url, *existing;
gchar *url_str;
gint rc;
msg_debug_html ("found url %s in query of url"
" %*s", url_str, url->querylen, url->query);
- if (!g_hash_table_lookup (target,
- query_url)) {
+ if ((existing = g_hash_table_lookup (target,
+ query_url)) == NULL) {
g_hash_table_insert (target,
query_url,
query_url);
}
+ else {
+ existing->count ++;
+ }
}
}
}
turl->flags |= RSPAMD_URL_FLAG_HTML_DISPLAYED;
turl->flags &= ~RSPAMD_URL_FLAG_FROM_TEXT;
}
+
+ turl->count ++;
}
else {
g_hash_table_insert (target_tbl,
g_hash_table_insert (target_tbl, url, url);
}
else {
+ turl->count ++;
url = NULL;
}
memset (uri, 0, sizeof (*uri));
memset (&u, 0, sizeof (u));
+ uri->count = 1;
if (*uristring == '\0') {
return URI_ERRNO_EMPTY;
struct rspamd_process_exception *ex;
struct rspamd_task *task;
gchar *url_str = NULL;
- struct rspamd_url *query_url;
+ struct rspamd_url *query_url, *existing;
gint rc;
task = cbd->task;
if (url->protocol == PROTOCOL_MAILTO) {
if (url->userlen > 0) {
- if (!g_hash_table_lookup (task->emails, url)) {
+ if ((existing = g_hash_table_lookup (task->emails, url)) == NULL) {
url->flags |= RSPAMD_URL_FLAG_FROM_TEXT;
g_hash_table_insert (task->emails, url,
url);
}
+ else {
+ existing->count ++;
+ }
}
}
else {
- if (!g_hash_table_lookup (task->urls, url)) {
+ if ((existing = g_hash_table_lookup (task->urls, url)) == NULL) {
url->flags |= RSPAMD_URL_FLAG_FROM_TEXT;
g_hash_table_insert (task->urls, url, url);
}
+ else {
+ existing->count ++;
+ }
}
cbd->part->exceptions = g_list_prepend (
msg_debug_task ("found url %s in query of url"
" %*s", url_str, url->querylen, url->query);
- if (!g_hash_table_lookup (task->urls,
- query_url)) {
+ if ((existing = g_hash_table_lookup (task->urls,
+ query_url)) == NULL) {
query_url->flags |= RSPAMD_URL_FLAG_FROM_TEXT;
g_hash_table_insert (task->urls,
query_url,
query_url);
}
+ else {
+ existing->count ++;
+ }
}
}
}
{
struct rspamd_task *task = ud;
gchar *url_str = NULL;
- struct rspamd_url *query_url;
+ struct rspamd_url *query_url, *existing;
gint rc;
/* It is just a displayed URL, we should not check it for certain things */
if (url->protocol == PROTOCOL_MAILTO) {
if (url->userlen > 0) {
- if (!g_hash_table_lookup (task->emails, url)) {
+ if ((existing = g_hash_table_lookup (task->emails, url)) == NULL) {
g_hash_table_insert (task->emails, url,
url);
}
+ else {
+ existing->count ++;
+ }
}
}
else {
- if (!g_hash_table_lookup (task->urls, url)) {
+ if ((existing = g_hash_table_lookup (task->urls, url)) == NULL) {
g_hash_table_insert (task->urls, url, url);
}
+ else {
+ existing->count ++;
+ }
}
/* We also search the query for additional url inside */
msg_debug_task ("found url %s in query of url"
" %*s", url_str, url->querylen, url->query);
- if (!g_hash_table_lookup (task->urls,
- query_url)) {
+ if ((existing = g_hash_table_lookup (task->urls,
+ query_url))) {
g_hash_table_insert (task->urls,
query_url,
query_url);
}
+ else {
+ existing->count ++;
+ }
}
}
}
struct redirector_param *param = (struct redirector_param *)conn->ud;
struct rspamd_task *task;
gint r, urllen;
- struct rspamd_url *redirected_url;
+ struct rspamd_url *redirected_url, *existing;
const rspamd_ftok_t *hdr;
gchar *urlstr;
task->task_pool);
if (r == URI_ERRNO_OK) {
- if (!g_hash_table_lookup (task->urls, redirected_url)) {
+ if ((existing = g_hash_table_lookup (task->urls, redirected_url))) {
g_hash_table_insert (task->urls, redirected_url,
redirected_url);
redirected_url->phished_url = param->url;
redirected_url->flags |= RSPAMD_URL_FLAG_REDIRECTED;
}
+ else {
+ existing->count ++;
+ }
rspamd_url_add_tag (param->url, "redirector", urlstr,
task->task_pool);