#include "SquidTime.h"
#include "Store.h"
-// This should be converted into a pooled type. Does not need to be cbdata
-CBDATA_TYPE(AuthUserIP);
-
time_t Auth::User::last_discard = 0;
Auth::User::User(Auth::Config *aConfig, const char *aRequestRealm) :
if (new_ipdata->ip_expiretime <= squid_curtime) {
/* This IP has expired - remove from the source list */
dlinkDelete(&new_ipdata->node, &(from->ip_list));
- cbdataFree(new_ipdata);
+ delete new_ipdata;
/* catch incipient underflow */
-- from->ipcount;
} else {
} else if (ipdata->ip_expiretime <= squid_curtime) {
/* This IP has expired - cleanup the destination list */
dlinkDelete(&ipdata->node, &ip_list);
- cbdataFree(ipdata);
+ delete ipdata;
/* catch incipient underflow */
assert(ipcount);
-- ipcount;
tempnode = (AuthUserIP *) ipdata->node.next;
/* walk the ip list */
dlinkDelete(&ipdata->node, &ip_list);
- cbdataFree(ipdata);
+ delete ipdata;
/* catch incipient underflow */
assert(ipcount);
-- ipcount;
if (ipdata->ipaddr == ipaddr) {
/* remove the node */
dlinkDelete(&ipdata->node, &ip_list);
- cbdataFree(ipdata);
+ delete ipdata;
/* catch incipient underflow */
assert(ipcount);
-- ipcount;
AuthUserIP *ipdata = (AuthUserIP *) ip_list.head;
int found = 0;
- CBDATA_INIT_TYPE(AuthUserIP);
-
/*
* we walk the entire list to prevent the first item in the list
* preventing old entries being flushed and locking a user out after
} else if (ipdata->ip_expiretime <= squid_curtime) {
/* This IP has expired - remove from the seen list */
dlinkDelete(&ipdata->node, &ip_list);
- cbdataFree(ipdata);
+ delete ipdata;
/* catch incipient underflow */
assert(ipcount);
-- ipcount;
return;
/* This ip is not in the seen list */
- ipdata = cbdataAlloc(AuthUserIP);
-
- ipdata->ip_expiretime = squid_curtime + ::Config.authenticateIpTTL;
-
- ipdata->ipaddr = ipaddr;
+ ipdata = new AuthUserIP(ipaddr, squid_curtime + ::Config.authenticateIpTTL);
dlinkAddTail(ipdata, &ipdata->node, &ip_list);
/**
* Node used to link an IP address to some user credentials
* for the max_user_ip ACL feature.
- *
- * \ingroup AuthAPI
*/
class AuthUserIP
{
public:
+ AuthUserIP(const Ip::Address &ip, time_t t) : ipaddr(ip), ip_expiretime(t) {}
+
dlink_node node;
/// IP address this user authenticated from
* (user,IP) pair plus authenticate_ip_ttl seconds
*/
time_t ip_expiretime;
+
+ MEMPROXY_CLASS(AuthUserIP);
};
+MEMPROXY_CLASS_INLINE(AuthUserIP);
+
// TODO: make auth schedule AsyncCalls?
typedef void AUTHCB(void*);