]>
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"
10 Auth::Digest::User::User(Auth::Config
*aConfig
) :
15 Auth::Digest::User::~User()
17 dlink_node
*link
, *tmplink
;
23 dlinkDelete(tmplink
, &nonces
);
24 authDigestNoncePurge(static_cast < digest_nonce_h
* >(tmplink
->data
));
25 authDigestNonceUnlink(static_cast < digest_nonce_h
* >(tmplink
->data
));
26 dlinkNodeDelete(tmplink
);
31 Auth::Digest::User::ttl() const
33 int32_t global_ttl
= static_cast<int32_t>(expiretime
- squid_curtime
+ ::Config
.authenticateTTL
);
35 /* find the longest lasting nonce. */
36 int32_t latest_nonce
= -1;
37 dlink_node
*link
= nonces
.head
;
39 digest_nonce_h
*nonce
= static_cast<digest_nonce_h
*>(link
->data
);
40 if (nonce
->flags
.valid
&& nonce
->noncedata
.creationtime
> latest_nonce
)
41 latest_nonce
= nonce
->noncedata
.creationtime
;
45 if (latest_nonce
== -1)
46 return min(-1, global_ttl
);
48 int32_t nonce_ttl
= latest_nonce
- current_time
.tv_sec
+ static_cast<Config
*>(Auth::Config::Find("digest"))->noncemaxduration
;
50 return min(nonce_ttl
, global_ttl
);