Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix and improve Ident (RFC 1413) code #245

Closed
wants to merge 51 commits into from
Closed
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
e0f1820
Fix IDENT assertion: FilledChecklist.cc:258: "!rfc931[0]"
eduard-bagdasaryan Jan 29, 2024
d237fb4
Removed ACLFilledChecklist::rfc931
eduard-bagdasaryan Feb 1, 2024
6c2106d
Removed rfc931 from ALE and Icap::History
eduard-bagdasaryan Feb 5, 2024
c49a797
Introduced ALE::acceptedClientConnection
eduard-bagdasaryan Feb 8, 2024
7a0daa3
Use std::optional for Connection::ident
eduard-bagdasaryan Feb 8, 2024
31c14b2
Missed one ALE::initAcceptedConnection() call
eduard-bagdasaryan Feb 8, 2024
e9b925c
Fixed a couple of dereferencing problems, added documentation, etc.
eduard-bagdasaryan Feb 9, 2024
453e63c
Added USE_IDENT guard
eduard-bagdasaryan Feb 9, 2024
125305d
Removed --disable-ident-lookups configuration option
eduard-bagdasaryan Feb 13, 2024
9bcacfe
Minor polishing
eduard-bagdasaryan Feb 13, 2024
ad28735
Merged from master
eduard-bagdasaryan Feb 13, 2024
e701d15
Removed AccessLogEntry::setClientIdent()
eduard-bagdasaryan Feb 15, 2024
4f70c5c
Use Ident::User in IDCB callbacks
eduard-bagdasaryan Feb 16, 2024
4149206
Removed a dash special meaning for ident ACLs
eduard-bagdasaryan Feb 16, 2024
a036b2e
Fixed the 'Ident does not name a type' build error
eduard-bagdasaryan Feb 16, 2024
17cc33c
Clarified ident/ident_regex documentation
eduard-bagdasaryan Feb 19, 2024
f55c1dd
Call std::make_optional() only once before the loop
eduard-bagdasaryan Feb 21, 2024
9841f32
Adjusted ident_regex documentation
eduard-bagdasaryan Feb 21, 2024
344847d
Use RFC 1413 instead of deprecated RFC 931 in documentation/references
eduard-bagdasaryan Feb 21, 2024
ac20a49
Ident::ReadReply(): Provided deleteThis() with fault-specific messages
eduard-bagdasaryan Feb 23, 2024
42e71c0
Documented a couple of cases when '-' does not match in ident_regex
eduard-bagdasaryan Feb 25, 2024
60c8db1
fixup: Tried to match documentation to branch code
rousskov May 5, 2024
3cc5b0d
Removed an unused USE_IDENT and polished debugging
eduard-bagdasaryan May 6, 2024
3d1b64b
Merged from master and resolved conflicts
eduard-bagdasaryan May 7, 2024
e07a6f6
Fixed code indentation
eduard-bagdasaryan May 7, 2024
f4be7f2
Autoformatted
eduard-bagdasaryan May 7, 2024
c20b473
fixup: Removed more USE_IDENT_LOOKUP leftovers
rousskov May 8, 2024
27953d0
fixup: Polish Comm::Connection::setIdent() debugging
rousskov May 8, 2024
cbd3cb9
fixup: Report Ident errors when reporting Connection state
rousskov May 8, 2024
bd0cfc6
fixup: #include order
rousskov May 8, 2024
6a7f138
fixup: Use cheaper/simpler and arguably more natural value accessor
rousskov May 8, 2024
d996a62
fixup: Emulate strOrNull() when logging getClientIdent()
rousskov May 9, 2024
27ca87d
Do not (ab)use empty SBuf as a sign of Ident lookup failures
rousskov May 9, 2024
fca4382
Reduce chances of ACLIdent::StartLookup() assertions and loops
rousskov May 10, 2024
6d06896
fixup: Expanded ACLIdent::match() XXX description
rousskov May 10, 2024
2770131
fixup: Addressed branch-added ACLIdent::match() XXX
rousskov May 10, 2024
cae276f
fixup: Remove remaining disparity between Ident::Lookup conn src
rousskov May 10, 2024
9234d9e
fixup: Disclosed added performance regression
rousskov May 10, 2024
c913a2e
Clarify ALE::tcpClient scope; undo acceptedClientConnection changes
rousskov May 10, 2024
e88b7b8
fixup: Reduce API/footprint by removing ALE::getClientIdentLookup()
rousskov May 11, 2024
1e67078
fixup: ~Restore code restoring ALE IDENT info
rousskov May 11, 2024
e42101c
fixup: Minor polishing of comments, names, style, RFC 931 leftovers, …
rousskov May 11, 2024
a4857e9
fixup: Simplified Connection::setIdent() logic
rousskov May 13, 2024
3ded830
fixup: Polish Ident type declarations
rousskov May 13, 2024
c992599
WIP: Remove Ident::Lookup debugging code duplication
rousskov May 13, 2024
e7db008
Revert "WIP: Remove Ident::Lookup debugging code duplication"
rousskov May 13, 2024
038de22
fixup: Removed unnecessary #include
rousskov May 13, 2024
7e707a5
Added a missing ACLIdent::ShouldStartLookup() precondition
eduard-bagdasaryan May 15, 2024
3468788
fixup: Use RFC 1413 "Ident server" terminology
rousskov May 19, 2024
b9c77bf
Merged from master
eduard-bagdasaryan May 19, 2024
a9266c1
fixup: Updated (future) Release notes
rousskov May 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -1943,14 +1943,6 @@ AC_MSG_NOTICE([Support for X-Forwarded-For enabled: ${enable_follow_x_forwarded_
SQUID_DEFINE_BOOL(FOLLOW_X_FORWARDED_FOR,$enable_follow_x_forwarded_for,
[Enable following X-Forwarded-For headers])

AC_ARG_ENABLE(ident-lookups,
AS_HELP_STRING([--disable-ident-lookups],
[Remove code that supports performing Ident (RFC 931) lookups.]), [
SQUID_YESNO([$enableval],[--enable-ident-lookups])
])
AC_MSG_NOTICE([Support for Ident lookups enabled: ${enable_ident_lookups:=yes}])
SQUID_DEFINE_BOOL(USE_IDENT,$enable_ident_lookups,[Support for Ident (RFC 931) lookups])

dnl Select Default hosts file location
AC_ARG_ENABLE(default-hostsfile,
AS_HELP_STRING([--enable-default-hostsfile=path],
Expand Down
10 changes: 2 additions & 8 deletions src/AccessLogEntry.cc
Original file line number Diff line number Diff line change
Expand Up @@ -96,16 +96,10 @@ AccessLogEntry::syncNotes(HttpRequest *req)
assert(notes == req->notes());
}

const char *
Ident::User
AccessLogEntry::getClientIdent() const
{
if (tcpClient)
return tcpClient->rfc931;

if (cache.rfc931 && *cache.rfc931)
return cache.rfc931;

return nullptr;
return acceptedClientConnection ? acceptedClientConnection->ident : std::nullopt;
}

const char *
Expand Down
16 changes: 13 additions & 3 deletions src/AccessLogEntry.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ class AccessLogEntry: public CodeContext
/// Side effect: Enables reverse DNS lookups of future client addresses.
const char *getLogClientFqdn(char *buf, size_t bufSize) const;

/// Fetch the client IDENT string, or nil if none is available.
const char *getClientIdent() const;
/// \returns rfc931 user identity (including empty strings), if any
Ident::User getClientIdent() const;

/// Fetch the external ACL provided 'user=' string, or nil if none is available.
const char *getExtUser() const;
Expand All @@ -79,6 +79,13 @@ class AccessLogEntry: public CodeContext

SBuf url;

// TODO: Adaptation::Icap::ALE (and other Squid-initiated transactions) do not have
// accepted connections. A future Adaptation::Icap::ALE must have these removed.
/// initializes client connection with a connection accepted by Squid
void initAcceptedConnection(Comm::ConnectionPointer p) { acceptedClientConnection = p; tcpClient = p; }
/// \returns a connection accepted by Squid
Comm::ConnectionPointer getAcceptedConnection() const { return acceptedClientConnection; }

/// TCP/IP level details about the client connection
Comm::ConnectionPointer tcpClient;
// TCP/IP level details about the server or peer connection
Expand Down Expand Up @@ -157,7 +164,6 @@ class AccessLogEntry: public CodeContext
LogTags code;
struct timeval start_time; ///< The time the master transaction started
struct timeval trTime; ///< The response time
const char *rfc931 = nullptr;
const char *extuser = nullptr;
#if USE_OPENSSL
const char *ssluser = nullptr;
Expand Down Expand Up @@ -281,6 +287,10 @@ class AccessLogEntry: public CodeContext
/// Client URI (or equivalent) for effectiveVirginUrl() when HttpRequest is
/// missing. This member is ignored unless the request member is nil.
SBuf virginUrlForMissingRequest_;

/// The same as tcpClient for transactions accepted by Squid.
/// Nil for transactions open by Squid (e.g., ICAP transactions).
Comm::ConnectionPointer acceptedClientConnection;
};

class ACLChecklist;
Expand Down
4 changes: 0 additions & 4 deletions src/AclRegs.cc
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,7 @@
#endif
#include "base/RegexPattern.h"
#include "ExternalACL.h"
#if USE_IDENT
#include "ident/AclIdent.h"
#endif
#if SQUID_SNMP
#include "snmp_core.h"
#endif
Expand Down Expand Up @@ -273,10 +271,8 @@ Acl::Init()
RegisterMaker("eui64", [](TypeName name)->Node* { return new ACLEui64(name); });
#endif

#if USE_IDENT
RegisterMaker("ident", [](TypeName name)->Node* { return new ACLIdent(new ACLUserData, name); });
RegisterMaker("ident_regex", [](TypeName name)->Node* { return new ACLIdent(new ACLRegexData, name); });
#endif

#if USE_AUTH
RegisterMaker("ext_user", [](TypeName name)->Node* { return new ACLExtUser(new ACLUserData, name); });
Expand Down
2 changes: 1 addition & 1 deletion src/DelayId.cc
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ DelayId::DelayClient(ClientHttpRequest * http, HttpReply *reply)
continue;
}

ACLFilledChecklist ch(DelayPools::delay_data[pool].access, r, nullptr);
ACLFilledChecklist ch(DelayPools::delay_data[pool].access, r);
clientAclChecklistFill(ch, http);
if (!ch.reply && reply) {
ch.reply = reply;
Expand Down
10 changes: 5 additions & 5 deletions src/FwdState.cc
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ FwdState::Start(const Comm::ConnectionPointer &clientConn, StoreEntry *entry, Ht
* Intentionally replace the src_addr automatically selected by the checklist code
* we do NOT want the indirect client address to be tested here.
*/
ACLFilledChecklist ch(Config.accessList.miss, request, nullptr);
ACLFilledChecklist ch(Config.accessList.miss, request);
ch.al = al;
ch.src_addr = request->client_addr;
ch.syncAle(request, nullptr);
Expand Down Expand Up @@ -1136,7 +1136,7 @@ FwdState::connectStart()
cs->setHost(request->url.host());
bool retriable = checkRetriable();
if (!retriable && Config.accessList.serverPconnForNonretriable) {
ACLFilledChecklist ch(Config.accessList.serverPconnForNonretriable, request, nullptr);
ACLFilledChecklist ch(Config.accessList.serverPconnForNonretriable, request);
ch.al = al;
ch.syncAle(request, nullptr);
retriable = ch.fastCheck().allowed();
Expand Down Expand Up @@ -1504,7 +1504,7 @@ getOutgoingAddress(HttpRequest * request, const Comm::ConnectionPointer &conn)
return; // anything will do.
}

ACLFilledChecklist ch(nullptr, request, nullptr);
ACLFilledChecklist ch(nullptr, request);
ch.dst_peer_name = conn->getPeer() ? conn->getPeer()->name : nullptr;
ch.dst_addr = conn->remote;

Expand All @@ -1531,7 +1531,7 @@ GetTosToServer(HttpRequest * request, Comm::Connection &conn)
if (!Ip::Qos::TheConfig.tosToServer)
return 0;

ACLFilledChecklist ch(nullptr, request, nullptr);
ACLFilledChecklist ch(nullptr, request);
ch.dst_peer_name = conn.getPeer() ? conn.getPeer()->name : nullptr;
ch.dst_addr = conn.remote;
return aclMapTOS(Ip::Qos::TheConfig.tosToServer, &ch);
Expand All @@ -1544,7 +1544,7 @@ GetNfmarkToServer(HttpRequest * request, Comm::Connection &conn)
if (!Ip::Qos::TheConfig.nfmarkToServer)
return 0;

ACLFilledChecklist ch(nullptr, request, nullptr);
ACLFilledChecklist ch(nullptr, request);
ch.dst_peer_name = conn.getPeer() ? conn.getPeer()->name : nullptr;
ch.dst_addr = conn.remote;
const auto mc = aclFindNfMarkConfig(Ip::Qos::TheConfig.nfmarkToServer, &ch);
Expand Down
4 changes: 2 additions & 2 deletions src/HttpHeaderTools.cc
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ httpHdrMangle(HttpHeaderEntry * e, HttpRequest * request, HeaderManglers *hms, c
return 1;
}

ACLFilledChecklist checklist(hm->access_list, request, nullptr);
ACLFilledChecklist checklist(hm->access_list, request);

checklist.al = al;
if (al && al->reply) {
Expand Down Expand Up @@ -497,7 +497,7 @@ HeaderManglers::find(const HttpHeaderEntry &e) const
void
httpHdrAdd(HttpHeader *heads, HttpRequest *request, const AccessLogEntryPointer &al, HeaderWithAclList &headersAdd)
{
ACLFilledChecklist checklist(nullptr, request, nullptr);
ACLFilledChecklist checklist(nullptr, request);

checklist.al = al;
if (al && al->reply) {
Expand Down
2 changes: 1 addition & 1 deletion src/HttpReply.cc
Original file line number Diff line number Diff line change
Expand Up @@ -594,7 +594,7 @@ HttpReply::calcMaxBodySize(HttpRequest& request) const
if (!Config.ReplyBodySize)
return;

ACLFilledChecklist ch(nullptr, &request, nullptr);
ACLFilledChecklist ch(nullptr, &request);
// XXX: cont-cast becomes irrelevant when checklist is HttpReply::Pointer
ch.reply = const_cast<HttpReply *>(this);
HTTPMSGLOCK(ch.reply);
Expand Down
4 changes: 2 additions & 2 deletions src/HttpRequest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -601,7 +601,7 @@ HttpRequest::getRangeOffsetLimit()

rangeOffsetLimit = 0; // default value for rangeOffsetLimit

ACLFilledChecklist ch(nullptr, this, nullptr);
ACLFilledChecklist ch(nullptr, this);
ch.src_addr = client_addr;
ch.my_addr = my_addr;

Expand Down Expand Up @@ -798,7 +798,7 @@ HttpRequest::manager(const CbcPointer<ConnStateData> &aMgr, const AccessLogEntry
const bool proxyProtocolPort = port ? port->flags.proxySurrogate : false;
if (flags.interceptTproxy && !proxyProtocolPort) {
if (Config.accessList.spoof_client_ip) {
ACLFilledChecklist *checklist = new ACLFilledChecklist(Config.accessList.spoof_client_ip, this, clientConnection->rfc931);
const auto checklist = new ACLFilledChecklist(Config.accessList.spoof_client_ip, this);
checklist->al = al;
checklist->syncAle(this, nullptr);
flags.spoofClientIp = checklist->fastCheck().allowed();
Expand Down
2 changes: 1 addition & 1 deletion src/Notes.cc
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ Note::addValue(const char *value, const bool quoted, const char *descr, const Va
bool
Note::match(HttpRequest *request, HttpReply *reply, const AccessLogEntry::Pointer &al, SBuf &matched)
{
ACLFilledChecklist ch(nullptr, request, nullptr);
ACLFilledChecklist ch(nullptr, request);
ch.al = al;
ch.reply = reply;
ch.syncAle(request, nullptr);
Expand Down
25 changes: 1 addition & 24 deletions src/acl/FilledChecklist.cc
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ ACLFilledChecklist::ACLFilledChecklist() :
my_addr.setEmpty();
src_addr.setEmpty();
dst_addr.setEmpty();
rfc931[0] = '\0';
}

ACLFilledChecklist::~ACLFilledChecklist()
Expand Down Expand Up @@ -108,13 +107,6 @@ ACLFilledChecklist::verifyAle() const
showDebugWarning("HttpReply object");
al->reply = reply;
}

#if USE_IDENT
if (*rfc931 && !al->cache.rfc931) {
showDebugWarning("IDENT");
al->cache.rfc931 = xstrdup(rfc931);
}
#endif
}

void
Expand Down Expand Up @@ -208,7 +200,7 @@ ACLFilledChecklist::markSourceDomainChecked()
* *not* delete the list. After the callback function returns,
* checkCallback() will delete the list (i.e., self).
*/
ACLFilledChecklist::ACLFilledChecklist(const acl_access *A, HttpRequest *http_request, const char *ident):
ACLFilledChecklist::ACLFilledChecklist(const acl_access *A, HttpRequest *http_request):
dst_rdns(nullptr),
reply(nullptr),
#if USE_AUTH
Expand All @@ -226,11 +218,9 @@ ACLFilledChecklist::ACLFilledChecklist(const acl_access *A, HttpRequest *http_re
my_addr.setEmpty();
src_addr.setEmpty();
dst_addr.setEmpty();
rfc931[0] = '\0';

changeAcl(A);
setRequest(http_request);
setIdent(ident);
}

void ACLFilledChecklist::setRequest(HttpRequest *httpRequest)
Expand All @@ -250,16 +240,3 @@ void ACLFilledChecklist::setRequest(HttpRequest *httpRequest)
setConn(cmgr);
}
}

void
ACLFilledChecklist::setIdent(const char *ident)
{
#if USE_IDENT
assert(!rfc931[0]);
if (ident)
xstrncpy(rfc931, ident, USER_IDENT_SZ);
#else
(void)ident;
#endif
}

8 changes: 4 additions & 4 deletions src/acl/FilledChecklist.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,11 @@ class ACLFilledChecklist: public ACLChecklist

public:
ACLFilledChecklist();
ACLFilledChecklist(const acl_access *, HttpRequest *, const char *ident = nullptr);
ACLFilledChecklist(const acl_access *, HttpRequest *);
~ACLFilledChecklist() override;

/// configure client request-related fields for the first time
void setRequest(HttpRequest *);
/// configure rfc931 user identity for the first time
void setIdent(const char *userIdentity);

public:
/// The client connection manager
Expand Down Expand Up @@ -69,6 +67,9 @@ class ACLFilledChecklist: public ACLChecklist
void syncAle(HttpRequest *adaptedRequest, const char *logUri) const override;
void verifyAle() const override;

/// \copydoc AccessLogEntry::getClientIdent()
Ident::User ident() const { return al ? al->getClientIdent() : std::nullopt; }

public:
Ip::Address src_addr;
Ip::Address dst_addr;
Expand All @@ -79,7 +80,6 @@ class ACLFilledChecklist: public ACLChecklist
HttpRequest::Pointer request;
HttpReply *reply;

char rfc931[USER_IDENT_SZ];
#if USE_AUTH
Auth::UserRequest::Pointer auth_user_request;
#endif
Expand Down
2 changes: 1 addition & 1 deletion src/adaptation/AccessCheck.cc
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ Adaptation::AccessCheck::checkCandidates()
if (AccessRule *r = FindRule(topCandidate())) {
/* BUG 2526: what to do when r->acl is empty?? */
// XXX: we do not have access to conn->rfc931 here.
acl_checklist = new ACLFilledChecklist(r->acl, filter.request, dash_str);
acl_checklist = new ACLFilledChecklist(r->acl, filter.request);
if ((acl_checklist->reply = filter.reply))
HTTPMSGLOCK(acl_checklist->reply);
acl_checklist->al = filter.al;
Expand Down
3 changes: 2 additions & 1 deletion src/adaptation/icap/History.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#ifndef SQUID_SRC_ADAPTATION_ICAP_HISTORY_H
#define SQUID_SRC_ADAPTATION_ICAP_HISTORY_H

#include "AccessLogEntry.h"
#include "base/RefCount.h"
#include "enums.h"
#include "LogTags.h"
Expand Down Expand Up @@ -36,14 +37,14 @@ class History: public RefCountable
/// \param[out] total time taken for all ICAP processing
void processingTime(struct timeval &total) const;

String rfc931; ///< the username from ident
#if USE_OPENSSL
String ssluser; ///< the username from SSL
#endif
LogTags logType; ///< the squid request status (TCP_MISS etc)

String log_uri; ///< the request uri
size_t req_sz; ///< the request size
AccessLogEntry::Pointer acceptedClientAle;

private:
void currentTime(struct timeval &) const; ///< time since current start or zero
Expand Down
2 changes: 1 addition & 1 deletion src/adaptation/icap/Launcher.cc
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ bool Adaptation::Icap::Launcher::canRepeat(Adaptation::Icap::XactAbortInfo &info
return true;

ACLFilledChecklist *cl =
new ACLFilledChecklist(TheConfig.repeat, info.icapRequest, dash_str);
new ACLFilledChecklist(TheConfig.repeat, info.icapRequest);
cl->reply = info.icapReply;
HTTPMSGLOCK(cl->reply);

Expand Down
4 changes: 2 additions & 2 deletions src/adaptation/icap/ModXact.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1341,8 +1341,8 @@ void Adaptation::Icap::ModXact::finalizeLogInfo()
// XXX: This reply (and other ALE members!) may have been needed earlier.
al.reply = adapted_reply_;

if (h->rfc931.size())
al.cache.rfc931 = h->rfc931.termedBuf();
if (h->acceptedClientAle)
al.initAcceptedConnection(h->acceptedClientAle->getAcceptedConnection());

#if USE_OPENSSL
if (h->ssluser.size())
Expand Down
2 changes: 1 addition & 1 deletion src/adaptation/icap/icap_log.cc
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ icapLogRotate()
void icapLogLog(AccessLogEntry::Pointer &al)
{
if (IcapLogfileStatus == LOG_ENABLE) {
ACLFilledChecklist checklist(nullptr, al->adapted_request, nullptr);
ACLFilledChecklist checklist(nullptr, al->adapted_request);
if (al->reply) {
checklist.reply = al->reply.getRaw();
HTTPMSGLOCK(checklist.reply);
Expand Down
2 changes: 1 addition & 1 deletion src/auth/UserRequest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -465,7 +465,7 @@ static Auth::ConfigVector &
schemesConfig(HttpRequest *request, HttpReply *rep)
{
if (!Auth::TheConfig.schemeLists.empty() && Auth::TheConfig.schemeAccess) {
ACLFilledChecklist ch(nullptr, request, nullptr);
ACLFilledChecklist ch(nullptr, request);
ch.reply = rep;
HTTPMSGLOCK(ch.reply);
const auto answer = ch.fastCheck(Auth::TheConfig.schemeAccess);
Expand Down
2 changes: 0 additions & 2 deletions src/cf.data.pre
Original file line number Diff line number Diff line change
Expand Up @@ -2093,7 +2093,6 @@ DOC_END

NAME: ident_lookup_access
TYPE: acl_access
IFDEF: USE_IDENT
DEFAULT: none
DEFAULT_DOC: Unless rules exist in squid.conf, IDENT is not fetched.
LOC: Ident::TheConfig.identLookup
Expand Down Expand Up @@ -7469,7 +7468,6 @@ DOC_END

NAME: ident_timeout
TYPE: time_t
IFDEF: USE_IDENT
LOC: Ident::TheConfig.timeout
DEFAULT: 10 seconds
DOC_START
Expand Down
Loading
Loading