#include "../core/hooks.h"
+#include "../irc/irc.h"
#include "trusts.h"
static void __counthandler(int hooknum, void *arg);
void trusts_newnick(nick *sender, int moving) {
- uint32_t host;
trusthost *th;
void *arg[2];
+ struct irc_in_addr ipaddress;
- host = irc_in_addr_v4_to_int(&sender->p_ipaddr);
- th = th_getbyhost(host);
+ ip_canonicalize_tunnel(&ipaddress, &sender->p_ipaddr);
+
+ th = th_getbyhost(&ipaddress);
settrusthost(sender, th);
if(!th) {
setnextbytrust(sender, NULL);
- return;
+ } else {
+ setnextbytrust(sender, th->users);
+ th->users = sender;
}
- setnextbytrust(sender, th->users);
- th->users = sender;
+ arg[0] = sender;
+ arg[1] = (void *)(long)moving;
/* sucks we have to do this, at least until we get priority hooks */
- __counthandler(HOOK_TRUSTS_NEWNICK, sender);
+ __counthandler(HOOK_TRUSTS_NEWNICK, arg);
- arg[0] = sender;
- arg[1] = (void *)(long)moving;
triggerhook(HOOK_TRUSTS_NEWNICK, arg);
}
trusthost *th = gettrusthost(sender);
void *arg[2];
- if(!th)
- return;
-
- __counthandler(HOOK_TRUSTS_LOSTNICK, sender);
-
arg[0] = sender;
arg[1] = (void *)(long)moving;
+
+ __counthandler(HOOK_TRUSTS_LOSTNICK, arg);
triggerhook(HOOK_TRUSTS_LOSTNICK, arg);
+ if(!th)
+ return;
+
/*
* we need to erase this nick from the trusthost list
* stored in the ->nextbytrust (ext) pointers in each nick
}
static void __counthandler(int hooknum, void *arg) {
- time_t t = time(NULL);
- trusthost *th = gettrusthost((nick *)arg);
- trustgroup *tg = th->group;
+ time_t t = getnettime();
+ void **args = arg;
+ trusthost *th = gettrusthost((nick *)args[0]);
+ trustgroup *tg;
+
+ if(!th)
+ return;
+ tg = th->group;
tg->lastseen = th->lastseen = t;
if(hooknum == HOOK_TRUSTS_NEWNICK) {
th->count++;