]>
git.ipfire.org Git - thirdparty/squid.git/blob - src/auth/digest/User.cc
2 #include "auth/digest/auth_digest.h"
3 #include "auth/digest/User.h"
6 #include "SquidConfig.h"
9 Auth::Digest::User::User(Auth::Config
*aConfig
) :
14 Auth::Digest::User::~User()
16 dlink_node
*link
, *tmplink
;
22 dlinkDelete(tmplink
, &nonces
);
23 authDigestNoncePurge(static_cast < digest_nonce_h
* >(tmplink
->data
));
24 authDigestNonceUnlink(static_cast < digest_nonce_h
* >(tmplink
->data
));
25 dlinkNodeDelete(tmplink
);
30 Auth::Digest::User::ttl() const
32 int32_t global_ttl
= static_cast<int32_t>(expiretime
- squid_curtime
+ ::Config
.authenticateTTL
);
34 /* find the longest lasting nonce. */
35 int32_t latest_nonce
= -1;
36 dlink_node
*link
= nonces
.head
;
38 digest_nonce_h
*nonce
= static_cast<digest_nonce_h
*>(link
->data
);
39 if (nonce
->flags
.valid
&& nonce
->noncedata
.creationtime
> latest_nonce
)
40 latest_nonce
= nonce
->noncedata
.creationtime
;
44 if (latest_nonce
== -1)
45 return min(-1, global_ttl
);
47 int32_t nonce_ttl
= latest_nonce
- current_time
.tv_sec
+ static_cast<Config
*>(Auth::Config::Find("digest"))->noncemaxduration
;
49 return min(nonce_ttl
, global_ttl
);