From 1f585949e0409635007873768689a4ae3489a085 Mon Sep 17 00:00:00 2001 From: Amos Jeffries Date: Sun, 18 Sep 2011 12:54:22 +1200 Subject: [PATCH] Enumerate all ACL results for always_direct/never_direct. Some ACLs (ie random) produce DUNNO state. This avoids incorrect messages now and on future states. --- src/peer_select.cc | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/peer_select.cc b/src/peer_select.cc index 626cfa0423..209bb6d760 100644 --- a/src/peer_select.cc +++ b/src/peer_select.cc @@ -182,10 +182,13 @@ peerCheckNeverDirectDone(allow_t answer, void *data) debugs(44, 3, HERE << "direct = " << DirectStr[psstate->direct] << " (never_direct allow)"); break; case ACCESS_DENIED: // not relevant. + case ACCESS_DUNNO: // not relevant. break; - default: // Oops. Failed to get a result. + case ACCESS_AUTH_REQUIRED: + case ACCESS_AUTH_EXPIRED_OK: + case ACCESS_AUTH_EXPIRED_BAD: debugs(44, DBG_IMPORTANT, "WARNING: never_direct resulted in " << answer << ". Username ACLs are not reliable here."); - assert(answer != ACCESS_DUNNO); + break; } peerSelectFoo(psstate); } @@ -204,10 +207,13 @@ peerCheckAlwaysDirectDone(allow_t answer, void *data) debugs(44, 3, HERE << "direct = " << DirectStr[psstate->direct] << " (always_direct allow)"); break; case ACCESS_DENIED: // not relevant. + case ACCESS_DUNNO: // not relevant. break; - default: // Oops. Failed to get a result. + case ACCESS_AUTH_REQUIRED: + case ACCESS_AUTH_EXPIRED_OK: + case ACCESS_AUTH_EXPIRED_BAD: debugs(44, DBG_IMPORTANT, "WARNING: always_direct resulted in " << answer << ". Username ACLs are not reliable here."); - assert(answer != ACCESS_DUNNO); + break; } peerSelectFoo(psstate); } -- 2.47.3