#include "squid.h"
#include "AccessLogEntry.h"
#include "acl/Address.h"
#include "acl/FilledChecklist.h"
#include "acl/Gadgets.h"
#include "anyp/PortCfg.h"
#include "CacheManager.h"
#include "CachePeer.h"
#include "client_side.h"
#include "clients/forward.h"
#include "clients/HttpTunneler.h"
#include "comm/Connection.h"
#include "comm/ConnOpener.h"
#include "comm/Loops.h"
#include "CommCalls.h"
#include "errorpage.h"
#include "event.h"
#include "fd.h"
#include "fde.h"
#include "FwdState.h"
#include "globals.h"
#include "gopher.h"
#include "HappyConnOpener.h"
#include "hier_code.h"
#include "http.h"
#include "http/Stream.h"
#include "HttpReply.h"
#include "HttpRequest.h"
#include "icmp/net_db.h"
#include "internal.h"
#include "ip/Intercept.h"
#include "ip/NfMarkConfig.h"
#include "ip/QosConfig.h"
#include "ip/tools.h"
#include "MemObject.h"
#include "mgr/Registration.h"
#include "neighbors.h"
#include "pconn.h"
#include "PeerPoolMgr.h"
#include "ResolvedPeers.h"
#include "security/BlindPeerConnector.h"
#include "SquidConfig.h"
#include "ssl/PeekingPeerConnector.h"
#include "Store.h"
#include "StoreClient.h"
#include "urn.h"
#include "whois.h"
#include "ssl/cert_validate_message.h"
#include "ssl/Config.h"
#include "ssl/helper.h"
#include "ssl/ServerBump.h"
#include "ssl/support.h"
#include <cerrno>
Go to the source code of this file.
Classes | |
class | FwdStatePeerAnswerDialer |
Macros | |
#define | MAX_FWD_STATS_IDX 9 |
Functions | |
static time_t | diffOrZero (const time_t larger, const time_t smaller) |
static void | fwdServerClosedWrapper (const CommCloseCbParams ¶ms) |
static void | fwdStats (StoreEntry *s) |
tos_t | aclMapTOS (acl_tos *head, ACLChecklist *ch) |
Checks for a TOS value to apply depending on the ACL. More... | |
Ip::NfMarkConfig | aclFindNfMarkConfig (acl_nfmark *head, ACLChecklist *ch) |
Checks for a netfilter mark value to apply depending on the ACL. More... | |
void | getOutgoingAddress (HttpRequest *request, const Comm::ConnectionPointer &conn) |
static tos_t | GetTosToServer (HttpRequest *request, Comm::Connection &conn) |
static nfmark_t | GetNfmarkToServer (HttpRequest *request, Comm::Connection &conn) |
void | GetMarkingsToServer (HttpRequest *request, Comm::Connection &conn) |
void | ResetMarkingsToServer (HttpRequest *request, Comm::Connection &conn) |
Variables | |
static CLCB | fwdServerClosedWrapper |
static OBJH | fwdStats |
static int | FwdReplyCodes [MAX_FWD_STATS_IDX+1][Http::scInvalidHeader+1] |
PconnPool * | fwdPconnPool = new PconnPool("server-peers", nullptr) |
a collection of previously used persistent Squid-to-peer HTTP(S) connections More... | |
Macro Definition Documentation
◆ MAX_FWD_STATS_IDX
#define MAX_FWD_STATS_IDX 9 |
Definition at line 74 of file FwdState.cc.
Function Documentation
◆ aclFindNfMarkConfig()
Ip::NfMarkConfig aclFindNfMarkConfig | ( | acl_nfmark * | head, |
ACLChecklist * | ch | ||
) |
Definition at line 1513 of file FwdState.cc.
References Acl::Answer::allowed(), ACLChecklist::fastCheck(), head, and squidaio_request_t::next.
Referenced by ClientHttpRequest::doCallouts(), and GetNfmarkToServer().
◆ aclMapTOS()
tos_t aclMapTOS | ( | acl_tos * | head, |
ACLChecklist * | ch | ||
) |
Definition at line 1501 of file FwdState.cc.
References Acl::Answer::allowed(), ACLChecklist::fastCheck(), head, and squidaio_request_t::next.
Referenced by ClientHttpRequest::doCallouts(), and GetTosToServer().
◆ diffOrZero()
|
inlinestatic |
subtracts time_t values, returning zero if smaller exceeds the larger value time_t might be unsigned so we need to be careful when subtracting times...
Definition at line 447 of file FwdState.cc.
Referenced by FwdState::ForwardTimeout().
◆ fwdServerClosedWrapper()
|
static |
Definition at line 700 of file FwdState.cc.
References CommCommonCbParams::data, and FwdState::serverClosed().
◆ fwdStats()
|
static |
Definition at line 1378 of file FwdState.cc.
References FwdReplyCodes, int, MAX_FWD_STATS_IDX, Http::scInvalidHeader, and storeAppendPrintf().
◆ GetMarkingsToServer()
void GetMarkingsToServer | ( | HttpRequest * | request, |
Comm::Connection & | conn | ||
) |
Sets initial TOS value and Netfilter for the future outgoing connection. Updates the given Connection object, not the future transport connection.
Definition at line 1603 of file FwdState.cc.
References conn, debugs, GetNfmarkToServer(), GetTosToServer(), and request().
Referenced by HappyConnOpener::openFreshConnection(), PeerPoolMgr::openNewConnection(), and ResetMarkingsToServer().
◆ GetNfmarkToServer()
|
static |
- Returns
- the Netfilter mark that should be set on the to-peer connection
Definition at line 1590 of file FwdState.cc.
References aclFindNfMarkConfig(), conn, ACLFilledChecklist::dst_addr, ACLFilledChecklist::dst_peer_name, NULL, request(), and Ip::Qos::TheConfig.
Referenced by GetMarkingsToServer().
◆ getOutgoingAddress()
void getOutgoingAddress | ( | HttpRequest * | request, |
const Comm::ConnectionPointer & | conn | ||
) |
Definition at line 1524 of file FwdState.cc.
References SquidConfig::accessList, Acl::Answer::allowed(), COMM_DOBIND, COMM_TRANSPARENT, Config, conn, ACLFilledChecklist::dst_addr, ACLFilledChecklist::dst_peer_name, ACLChecklist::fastCheck(), Acl::Address::next, NULL, SquidConfig::onoff, SquidConfig::outgoing_address, request(), and SquidConfig::tproxy_uses_indirect_client.
Referenced by Adaptation::Icap::Xaction::dnsLookupDone(), PeerSelector::handlePath(), PeerPoolMgr::openNewConnection(), and peerProbeConnect().
◆ GetTosToServer()
|
static |
- Returns
- the TOS value that should be set on the to-peer connection
Definition at line 1577 of file FwdState.cc.
References aclMapTOS(), conn, ACLFilledChecklist::dst_addr, ACLFilledChecklist::dst_peer_name, NULL, request(), and Ip::Qos::TheConfig.
Referenced by GetMarkingsToServer().
◆ ResetMarkingsToServer()
void ResetMarkingsToServer | ( | HttpRequest * | , |
Comm::Connection & | |||
) |
Recomputes and applies TOS value and Netfilter to the outgoing connection. Updates both the given Connection object and the transport connection.
Definition at line 1612 of file FwdState.cc.
References conn, GetMarkingsToServer(), request(), Ip::Qos::setSockNfmark(), and Ip::Qos::setSockTos().
Referenced by TunnelStateData::connectDone(), and FwdState::syncWithServerConn().
Variable Documentation
◆ fwdPconnPool
Definition at line 77 of file FwdState.cc.
Referenced by FwdState::closePendingConnection(), FwdState::closeServerConnection(), Http::Tunneler::countFailingConnection(), Security::PeerConnector::countFailingConnection(), HttpStateData::processReplyBody(), HappyConnOpener::reuseOldConnection(), and FwdState::serverClosed().
◆ FwdReplyCodes
|
static |
Definition at line 75 of file FwdState.cc.
Referenced by fwdStats(), and FwdState::logReplyStatus().
◆ fwdServerClosedWrapper
|
static |
Definition at line 70 of file FwdState.cc.
Referenced by FwdState::syncWithServerConn().
◆ fwdStats
|
static |
Definition at line 72 of file FwdState.cc.
Referenced by FwdState::RegisterWithCacheManager().