#include "squid.h"
#include "CacheDigest.h"
#include "CachePeer.h"
#include "event.h"
#include "FwdState.h"
#include "globals.h"
#include "HttpReply.h"
#include "HttpRequest.h"
#include "internal.h"
#include "MemObject.h"
#include "mime_header.h"
#include "neighbors.h"
#include "PeerDigest.h"
#include "Store.h"
#include "store_key_md5.h"
#include "StoreClient.h"
#include "tools.h"
#include "util.h"

Go to the source code of this file.
Macros | |
#define | StoreDigestCBlockSize sizeof(StoreDigestCBlock) |
#define | f2s(flag) (pd->flags.flag ? "yes" : "no") |
#define | appendTime(tm) |
Functions | |
static time_t | peerDigestIncDelay (const PeerDigest *pd) |
static time_t | peerDigestNewDelay (const StoreEntry *e) |
static void | peerDigestSetCheck (PeerDigest *pd, time_t delay) |
static void | peerDigestRequest (PeerDigest *pd) |
static int | peerDigestFetchReply (void *, char *, ssize_t) |
int | peerDigestSwapInHeaders (void *, char *, ssize_t) |
int | peerDigestSwapInCBlock (void *, char *, ssize_t) |
int | peerDigestSwapInMask (void *, char *, ssize_t) |
static int | peerDigestFetchedEnough (DigestFetchState *fetch, char *buf, ssize_t size, const char *step_name) |
static void | peerDigestFetchStop (DigestFetchState *fetch, char *buf, const char *reason) |
static void | peerDigestFetchAbort (DigestFetchState *fetch, char *buf, const char *reason) |
static void | peerDigestReqFinish (DigestFetchState *fetch, char *buf, int, int, int, const char *reason, int err) |
static void | peerDigestPDFinish (DigestFetchState *fetch, int pcb_valid, int err) |
static void | peerDigestFetchFinish (DigestFetchState *fetch, int err) |
static void | peerDigestFetchSetStats (DigestFetchState *fetch) |
static int | peerDigestSetCBlock (PeerDigest *pd, const char *buf) |
static int | peerDigestUseful (const PeerDigest *pd) |
void | peerDigestCreate (CachePeer *p) |
static void | peerDigestDestroy (PeerDigest *pd) |
void | peerDigestNeeded (PeerDigest *pd) |
void | peerDigestNotePeerGone (PeerDigest *pd) |
static void | peerDigestCheck (void *data) |
static void | peerDigestHandleReply (void *data, StoreIOBuffer receivedData) |
static int | saneDiff (time_t diff) |
void | peerDigestStatsReport (const PeerDigest *pd, StoreEntry *e) |
Variables | |
static EVH | peerDigestCheck |
static STCB | peerDigestHandleReply |
Version const | CacheDigestVer = { 5, 3 } |
static const time_t | PeerDigestReqMinGap = 5 * 60 |
static const time_t | GlobDigestReqMinGap = 1 * 60 |
static time_t | pd_last_req_time = 0 |
Macro Definition Documentation
◆ appendTime
#define appendTime | ( | tm | ) |
◆ f2s
#define f2s | ( | flag | ) | (pd->flags.flag ? "yes" : "no") |
◆ StoreDigestCBlockSize
#define StoreDigestCBlockSize sizeof(StoreDigestCBlock) |
Definition at line 57 of file peer_digest.cc.
Function Documentation
◆ peerDigestCheck()
|
static |
Definition at line 238 of file peer_digest.cc.
References assert, cbdataReferenceValid(), debugs, PeerDigest::flags, GlobDigestReqMinGap, PeerDigest::host, PeerDigest::next_check, pd_last_req_time, PeerDigest::peer, peerDigestNotePeerGone(), PeerDigestReqMinGap, peerDigestRequest(), peerDigestSetCheck(), PeerDigest::received, PeerDigest::requested, squid_curtime, and PeerDigest::times.
◆ peerDigestCreate()
void peerDigestCreate | ( | CachePeer * | p | ) |
Definition at line 129 of file peer_digest.cc.
References assert, cbdataReference, and CachePeer::digest.
Referenced by parse_peer().
◆ peerDigestDestroy()
|
static |
Definition at line 148 of file peer_digest.cc.
References assert, cbdataReferenceDone, cbdataReferenceValidDone, and PeerDigest::peer.
Referenced by peerDigestNotePeerGone().
◆ peerDigestFetchAbort()
|
static |
Definition at line 768 of file peer_digest.cc.
References assert, debugs, PeerDigest::host, DigestFetchState::pd, and peerDigestReqFinish().
Referenced by peerDigestFetchReply(), peerDigestHandleReply(), peerDigestSwapInCBlock(), and peerDigestSwapInHeaders().
◆ peerDigestFetchedEnough()
|
static |
Definition at line 693 of file peer_digest.cc.
References assert, cbdataReferenceValid(), PeerDigest::cd, debugs, EBIT_TEST, DigestFetchState::entry, ENTRY_ABORTED, StoreEntry::flags, PeerDigest::host, DigestFetchState::mask_offset, CacheDigest::mask_size, DigestFetchState::offset, DigestFetchState::pd, PeerDigest::peer, peerDigestReqFinish(), peerDigestUseful(), and size.
Referenced by peerDigestFetchReply(), peerDigestHandleReply(), peerDigestSwapInCBlock(), peerDigestSwapInHeaders(), and peerDigestSwapInMask().
◆ peerDigestFetchFinish()
|
static |
Definition at line 857 of file peer_digest.cc.
References assert, DigestFetchState::bytes, StatCounters::cd, debugs, DigestFetchState::entry, StatCounters::kbytes_recv, StatCounters::kbytes_sent, DigestFetchState::msg, StatCounters::msgs_recv, StatCounters::msgs_sent, DigestFetchState::old_entry, DigestFetchState::old_sc, DigestFetchState::recv, StoreEntry::releaseRequest(), DigestFetchState::request, DigestFetchState::sent, statCounter, storeUnregister(), and StoreEntry::unlock().
Referenced by peerDigestReqFinish().
◆ peerDigestFetchReply()
|
static |
Definition at line 498 of file peer_digest.cc.
References assert, PeerDigest::cd, debugs, DIGEST_READ_DONE, DIGEST_READ_HEADERS, DIGEST_READ_REPLY, DigestFetchState::entry, MemObject::freshestReply(), headersEnd(), PeerDigest::host, StoreEntry::mem(), StoreEntry::mem_obj, DigestFetchState::offset, DigestFetchState::old_entry, DigestFetchState::old_sc, DigestFetchState::pd, peerDigestFetchAbort(), peerDigestFetchedEnough(), peerDigestFetchStop(), StoreEntry::releaseRequest(), MemObject::request, Store::Root(), DigestFetchState::sc, Http::scNone, Http::scNotModified, Http::scOkay, size, HttpReply::sline, SM_PAGE_SIZE, squid_curtime, DigestFetchState::state, Http::StatusLine::status(), storeUnregister(), StoreEntry::unlock(), and Store::Controller::updateOnNotModified().
Referenced by peerDigestHandleReply().
◆ peerDigestFetchSetStats()
|
static |
Definition at line 880 of file peer_digest.cc.
References assert, DigestFetchState::bytes, debugs, DigestFetchState::entry, DigestFetchState::expires, StoreEntry::expires, StoreEntry::lastModified(), StoreEntry::mem_obj, DigestFetchState::msg, HttpRequest::prefixLen(), DigestFetchState::recv, DigestFetchState::request, DigestFetchState::resp_time, DigestFetchState::sent, MemObject::size(), squid_curtime, and DigestFetchState::start_time.
Referenced by peerDigestReqFinish().
◆ peerDigestFetchStop()
|
static |
Definition at line 759 of file peer_digest.cc.
References assert, debugs, PeerDigest::host, DigestFetchState::pd, and peerDigestReqFinish().
Referenced by peerDigestFetchReply().
◆ peerDigestHandleReply()
|
static |
Definition at line 385 of file peer_digest.cc.
References assert, DigestFetchState::buf, DigestFetchState::bufofs, cbdataReferenceValid(), StoreIOBuffer::data, DIGEST_READ_CBLOCK, DIGEST_READ_DONE, DIGEST_READ_HEADERS, DIGEST_READ_MASK, DIGEST_READ_NONE, DIGEST_READ_REPLY, DigestFetchState::entry, fatal(), StoreIOBuffer::length, DigestFetchState::offset, StoreIOBuffer::offset, DigestFetchState::pd, peerDigestFetchAbort(), peerDigestFetchedEnough(), peerDigestFetchReply(), peerDigestHandleReply, peerDigestSwapInCBlock(), peerDigestSwapInHeaders(), peerDigestSwapInMask(), DigestFetchState::sc, SM_PAGE_SIZE, DigestFetchState::state, and storeClientCopy().
◆ peerDigestIncDelay()
|
static |
Definition at line 189 of file peer_digest.cc.
References assert, PeerDigestReqMinGap, PeerDigest::retry_delay, and PeerDigest::times.
Referenced by peerDigestReqFinish().
◆ peerDigestNeeded()
void peerDigestNeeded | ( | PeerDigest * | pd | ) |
Definition at line 176 of file peer_digest.cc.
References assert, PeerDigest::cd, PeerDigest::flags, PeerDigest::needed, peerDigestSetCheck(), squid_curtime, and PeerDigest::times.
Referenced by peerDigestLookup().
◆ peerDigestNewDelay()
|
static |
Definition at line 200 of file peer_digest.cc.
References assert, StoreEntry::expires, PeerDigestReqMinGap, and squid_curtime.
Referenced by peerDigestReqFinish().
◆ peerDigestNotePeerGone()
void peerDigestNotePeerGone | ( | PeerDigest * | pd | ) |
Definition at line 223 of file peer_digest.cc.
References debugs, PeerDigest::flags, PeerDigest::host, peerDigestDestroy(), and PeerDigest::requested.
Referenced by peerDigestCheck(), and peerDigestPDFinish().
◆ peerDigestPDFinish()
|
static |
Definition at line 817 of file peer_digest.cc.
References assert, DigestFetchState::bytes, cbdataReferenceDone, PeerDigest::cd, DBG_IMPORTANT, debugs, DigestFetchState::entry, PeerDigest::flags, PeerDigest::host, PeerDigest::kbytes, DigestFetchState::msg, PeerDigest::msgs, DigestFetchState::pd, peerDigestNotePeerGone(), PeerDigest::received, DigestFetchState::recv, PeerDigest::recv, PeerDigest::req_delay, PeerDigest::req_result, DigestFetchState::resp_time, DigestFetchState::sent, PeerDigest::sent, squid_curtime, PeerDigest::stats, STORE_OK, StoreEntry::store_status, PeerDigest::times, and PeerDigest::usable.
Referenced by peerDigestReqFinish().
◆ peerDigestReqFinish()
|
static |
Definition at line 777 of file peer_digest.cc.
References assert, DigestFetchState::entry, PeerDigest::flags, DigestFetchState::pd, peerDigestFetchFinish(), peerDigestFetchSetStats(), peerDigestIncDelay(), peerDigestNewDelay(), peerDigestPDFinish(), peerDigestSetCheck(), PeerDigest::req_result, PeerDigest::requested, PeerDigest::retry_delay, and PeerDigest::times.
Referenced by peerDigestFetchAbort(), peerDigestFetchedEnough(), and peerDigestFetchStop().
◆ peerDigestRequest()
|
static |
Definition at line 290 of file peer_digest.cc.
References Http::ACCEPT, assert, DigestFetchState::buf, RequestFlags::cachable, StoreIOBuffer::data, debugs, CachePeer::digest_url, EBIT_TEST, Security::PeerOptions::encryptTransport, StoreEntry::ensureMemObject(), DigestFetchState::entry, HttpRequest::flags, PeerDigest::flags, StoreEntry::flags, HttpRequest::FromUrlXXX(), FwdState::fwdStart(), Http::Message::header, CachePeer::host, CachePeer::http_port, internalRemoteUri(), KEY_PRIVATE, StoreEntry::lastModified(), HttpHeader::len, StoreIOBuffer::length, StoreEntry::lock(), CachePeer::login, HttpRequest::method, StoreIOBuffer::offset, DigestFetchState::old_entry, DigestFetchState::old_sc, pd_last_req_time, PeerDigest::peer, peerDigestHandleReply, HttpHeader::putStr(), RequestFlags::refresh, PeerDigest::req_result, PeerDigest::requested, safe_free, DigestFetchState::sc, CachePeer::secure, SM_PAGE_SIZE, squid_curtime, storeClientCopy(), storeClientListAdd(), storeCreateEntry(), StoreDigestFileName, StoreDigestMimeStr, storeGetPublicByRequest(), SupportOrVeto::support(), PeerDigest::times, HttpRequest::url, AnyP::Uri::userInfo(), and xstrdup.
Referenced by peerDigestCheck().
◆ peerDigestSetCBlock()
|
static |
Definition at line 912 of file peer_digest.cc.
References assert, StoreDigestCBlock::bits_per_entry, CacheDigestHashFuncCount, CacheDigestVer, CacheDigest::CalcMaskSize(), StoreDigestCBlock::capacity, PeerDigest::cd, StatCounters::cd, CacheDigest::count, StoreDigestCBlock::count, Version::current, DBG_CRITICAL, DBG_IMPORTANT, debugs, CacheDigest::del_count, StoreDigestCBlock::del_count, StoreDigestCBlock::hash_func_count, PeerDigest::host, CacheDigest::mask_size, StoreDigestCBlock::mask_size, StatCounters::memory, Version::required, statCounter, StoreDigestCBlock::ver, and xpercentInt().
Referenced by peerDigestSwapInCBlock().
◆ peerDigestSetCheck()
|
static |
Definition at line 212 of file peer_digest.cc.
References debugs, eventAdd(), PeerDigest::host, PeerDigest::next_check, peerDigestCheck, squid_curtime, and PeerDigest::times.
Referenced by peerDigestCheck(), peerDigestNeeded(), and peerDigestReqFinish().
◆ peerDigestStatsReport()
void peerDigestStatsReport | ( | const PeerDigest * | pd, |
StoreEntry * | e | ||
) |
Definition at line 1025 of file peer_digest.cc.
References appendTime, assert, cacheDigestGuessStatsReport(), cacheDigestReport(), PeerDigest::cd, f2s, PeerDigest::guess, PeerDigest::host, ByteCounter::kb, PeerDigest::kbytes, PeerDigest::msgs, PeerDigest::recv, PeerDigest::req_delay, PeerDigest::req_result, PeerDigest::retry_delay, PeerDigest::sent, SQUIDSBUFPH, SQUIDSBUFPRINT, PeerDigest::stats, storeAppendPrintf(), and PeerDigest::times.
Referenced by statPeerSelect().
◆ peerDigestSwapInCBlock()
int peerDigestSwapInCBlock | ( | void * | data, |
char * | buf, | ||
ssize_t | size | ||
) |
Definition at line 621 of file peer_digest.cc.
References assert, PeerDigest::cd, DIGEST_READ_CBLOCK, DIGEST_READ_MASK, DigestFetchState::entry, CacheDigest::mask, StoreEntry::mem_obj, DigestFetchState::pd, peerDigestFetchAbort(), peerDigestFetchedEnough(), peerDigestSetCBlock(), size, SM_PAGE_SIZE, DigestFetchState::state, and StoreDigestCBlockSize.
Referenced by peerDigestHandleReply().
◆ peerDigestSwapInHeaders()
int peerDigestSwapInHeaders | ( | void * | data, |
char * | buf, | ||
ssize_t | size | ||
) |
Definition at line 582 of file peer_digest.cc.
References assert, DBG_IMPORTANT, debugs, DIGEST_READ_CBLOCK, DIGEST_READ_HEADERS, DigestFetchState::entry, MemObject::freshestReply(), headersEnd(), PeerDigest::host, StoreEntry::mem(), DigestFetchState::offset, DigestFetchState::pd, peerDigestFetchAbort(), peerDigestFetchedEnough(), Http::scNone, Http::scOkay, size, HttpReply::sline, SM_PAGE_SIZE, DigestFetchState::state, and Http::StatusLine::status().
Referenced by peerDigestHandleReply().
◆ peerDigestSwapInMask()
int peerDigestSwapInMask | ( | void * | data, |
char * | buf, | ||
ssize_t | size | ||
) |
Definition at line 659 of file peer_digest.cc.
References assert, PeerDigest::cd, debugs, CacheDigest::mask, DigestFetchState::mask_offset, CacheDigest::mask_size, DigestFetchState::pd, peerDigestFetchedEnough(), and size.
Referenced by peerDigestHandleReply().
◆ peerDigestUseful()
|
static |
Definition at line 1004 of file peer_digest.cc.
References PeerDigest::cd, DBG_CRITICAL, debugs, PeerDigest::host, and CacheDigest::usedMaskPercent().
Referenced by peerDigestFetchedEnough().
◆ saneDiff()
|
static |
Definition at line 1019 of file peer_digest.cc.
References squid_curtime.
Variable Documentation
◆ CacheDigestVer
Version const CacheDigestVer = { 5, 3 } |
Definition at line 55 of file peer_digest.cc.
Referenced by peerDigestSetCBlock(), and storeDigestCBlockSwapOut().
◆ GlobDigestReqMinGap
|
static |
Definition at line 62 of file peer_digest.cc.
Referenced by peerDigestCheck().
◆ pd_last_req_time
|
static |
Definition at line 66 of file peer_digest.cc.
Referenced by peerDigestCheck(), and peerDigestRequest().
◆ peerDigestCheck
|
static |
Definition at line 37 of file peer_digest.cc.
Referenced by peerDigestSetCheck().
◆ peerDigestHandleReply
|
static |
Definition at line 39 of file peer_digest.cc.
Referenced by peerDigestHandleReply(), and peerDigestRequest().
◆ PeerDigestReqMinGap
|
static |
Definition at line 60 of file peer_digest.cc.
Referenced by peerDigestCheck(), peerDigestIncDelay(), and peerDigestNewDelay().