#include "squid.h"
#include "anyp/PortCfg.h"
#include "base/Subscription.h"
#include "client_side.h"
#include "fatal.h"
#include "fde.h"
#include "fqdncache.h"
#include "fs_io.h"
#include "htcp.h"
#include "http/Stream.h"
#include "ICP.h"
#include "ip/Intercept.h"
#include "ip/QosConfig.h"
#include "ipc/Coordinator.h"
#include "ipc/Kids.h"
#include "ipcache.h"
#include "MemBuf.h"
#include "sbuf/Stream.h"
#include "SquidConfig.h"
#include "SquidMath.h"
#include "store/Disks.h"
#include "tools.h"
#include "wordlist.h"
#include <cerrno>
Go to the source code of this file.
Macros | |
#define | DEAD_MSG "\The Squid Cache (version %s) died.\n\\n\You've encountered a fatal error in the Squid Cache version %s.\n\If a core file was created (possibly in the swap directory),\n\please execute 'gdb squid core' or 'dbx squid core', then type 'where',\n\and report the trace back to squid-bugs@lists.squid-cache.org.\n\\n\Thanks!\n" |
#define | HAVE_GETPAGESIZE 0 |
Functions | |
static void | mail_warranty (void) |
static void | restoreCapabilities (bool keep) |
void | releaseServerSockets (void) |
static char * | dead_msg (void) |
void | dumpMallocStats (void) |
void | squid_getrusage (struct rusage *r) |
double | rusage_cputime (struct rusage *r) |
int | rusage_maxrss (struct rusage *r) |
int | rusage_pagefaults (struct rusage *r) |
static void | makeTraceable () |
static void | setTraceability () |
void | PrintRusage (void) |
void | death (int sig) |
void | BroadcastSignalIfAny (int &sig) |
void | sigusr2_handle (int sig) |
void | debug_trap (const char *message) |
const char * | getMyHostname (void) |
const char * | uniqueHostname (void) |
void | leave_suid (void) |
void | enter_suid (void) |
void | no_suid (void) |
bool | IamMasterProcess () |
whether the current process is the parent of all other Squid processes More... | |
bool | IamWorkerProcess () |
whether the current process handles HTTP transactions and such More... | |
bool | IamDiskProcess () |
whether the current process is dedicated to managing a cache_dir More... | |
bool | InDaemonMode () |
Whether we are running in daemon mode. More... | |
bool | UsingSmp () |
Whether there should be more than one worker process running. More... | |
bool | IamCoordinatorProcess () |
whether the current process coordinates worker processes More... | |
bool | IamPrimaryProcess () |
int | NumberOfKids () |
number of Kid processes as defined in src/ipc/Kid.h More... | |
SBuf | ProcessRoles () |
a string describing this process roles such as worker or coordinator More... | |
void | setMaxFD (void) |
void | setSystemLimits (void) |
void | squid_signal (int sig, SIGHDLR *func, int flags) |
void | logsFlush (void) |
void | debugObj (int section, int level, const char *label, void *obj, ObjPackMethod pm) |
void | parseEtcHosts (void) |
int | getMyPort (void) |
void | setUmask (mode_t mask) |
void | strwordquote (MemBuf *mb, const char *str) |
void | keepCapabilities (void) |
pid_t | WaitForOnePid (pid_t pid, PidStatus &status, int flags) |
Variables | |
int | DebugSignal = -1 |
SBuf | service_name (APP_SHORTNAME) |
static char | tmp_error_buf [32768] |
Macro Definition Documentation
◆ DEAD_MSG
#define DEAD_MSG "\The Squid Cache (version %s) died.\n\\n\You've encountered a fatal error in the Squid Cache version %s.\n\If a core file was created (possibly in the swap directory),\n\please execute 'gdb squid core' or 'dbx squid core', then type 'where',\n\and report the trace back to squid-bugs@lists.squid-cache.org.\n\\n\Thanks!\n" |
◆ HAVE_GETPAGESIZE
Function Documentation
◆ BroadcastSignalIfAny()
void BroadcastSignalIfAny | ( | int & | sig | ) |
Definition at line 418 of file tools.cc.
References Kids::count(), Kids::get(), IamMasterProcess(), and TheKids.
Referenced by masterCheckAndBroadcastSignals().
◆ dead_msg()
|
static |
Definition at line 107 of file tools.cc.
References DEAD_MSG, LOCAL_ARRAY, and version_string.
Referenced by death(), and mail_warranty().
◆ death()
void death | ( | int | sig | ) |
Definition at line 345 of file tools.cc.
References SquidConfig::adminEmail, Config, DBG_CRITICAL, dead_msg(), debug_log, debugs, dumpMallocStats(), ForceAlert(), mail_warranty(), Debug::PrepareToDie(), PrintRusage(), releaseServerSockets(), shutting_down, squid_curtime, SQUID_RELEASE_TIME, and storeDirWriteCleanLogs().
Referenced by mainInitialize().
◆ debug_trap()
void debug_trap | ( | const char * | message | ) |
Definition at line 458 of file tools.cc.
References DBG_CRITICAL, debugs, fatal_dump(), and opt_catch_signals.
Referenced by EventScheduler::cancel(), clientdbEstablished(), clientdbUpdate(), neighborsUdpAck(), netdbHashDelete(), and unlinkdUnlink().
◆ debugObj()
void debugObj | ( | int | section, |
int | level, | ||
const char * | label, | ||
void * | obj, | ||
ObjPackMethod | pm | ||
) |
Definition at line 938 of file tools.cc.
References assert, MemBuf::buf, MemBuf::clean(), debugs, and MemBuf::init().
Referenced by clientInterpretRequestHeaders(), and internalStart().
◆ dumpMallocStats()
void dumpMallocStats | ( | void | ) |
Definition at line 166 of file tools.cc.
References debug_log, and Math::intPercent().
Referenced by death(), fatal_common(), and SquidShutdown().
◆ enter_suid()
void enter_suid | ( | void | ) |
Definition at line 623 of file tools.cc.
References debugs, setTraceability(), and xstrerr().
Referenced by comm_set_transparent(), htcpOpenPorts(), icpOpenPorts(), mainReconfigureFinish(), File::open(), Ipc::Coordinator::openListenSocket(), Ip::Intercept::ProbeForTproxy(), RemoveInstance(), squid_getrusage(), SquidMain(), Ipc::StartListening(), StartUsingConfig(), and watch_child().
◆ getMyHostname()
const char * getMyHostname | ( | void | ) |
Definition at line 467 of file tools.cc.
References Config, DBG_CRITICAL, DBG_IMPORTANT, debugs, Ip::Address::FreeAddr(), Ip::Address::getAddrInfo(), HttpPortList, Ip::Address::isAnyAddr(), LOCAL_ARRAY, SQUIDHOSTNAMELEN, SquidConfig::visibleHostname, and xstrerr().
Referenced by ErrorState::compileLegacyCode(), configDoConfigure(), ErrorState::Dump(), idnsParseResolvConf(), internalHostname(), internalLocalUri(), neighbors_init(), uniqueHostname(), and urnHandleReply().
◆ getMyPort()
int getMyPort | ( | void | ) |
Definition at line 1041 of file tools.cc.
References DBG_CRITICAL, debugs, FtpPortList, and HttpPortList.
Referenced by ClientHttpRequest::checkForInternalAccess(), ErrorState::compileLegacyCode(), and internalLocalUri().
◆ IamCoordinatorProcess()
bool IamCoordinatorProcess | ( | ) |
Definition at line 702 of file tools.cc.
References pkCoordinator, and TheProcessKind.
Referenced by IamPrimaryProcess(), ProcessRoles(), and SquidMain().
◆ IamDiskProcess()
bool IamDiskProcess | ( | ) |
Definition at line 684 of file tools.cc.
References pkDisker, and TheProcessKind.
Referenced by ProcessRoles().
◆ IamMasterProcess()
bool IamMasterProcess | ( | ) |
Definition at line 668 of file tools.cc.
References KidIdentifier.
Referenced by BroadcastSignalIfAny(), ProcessRoles(), SquidMain(), StartUsingConfig(), and Ipc::Mem::RegisteredRunner::useConfig().
◆ IamPrimaryProcess()
bool IamPrimaryProcess | ( | ) |
whether the current process is dedicated to doing things that only a single process should do, such as PID file maintenance and WCCP
Definition at line 708 of file tools.cc.
References Config, IamCoordinatorProcess(), IamWorkerProcess(), NumberOfKids(), opt_no_daemon, and SquidConfig::workers.
Referenced by Mgr::InfoAction::dump(), mainInitialize(), mainReconfigureFinish(), serverConnectionsClose(), serverConnectionsOpen(), and SquidMain().
◆ IamWorkerProcess()
bool IamWorkerProcess | ( | ) |
Definition at line 674 of file tools.cc.
References Config, opt_no_daemon, pkWorker, TheProcessKind, and SquidConfig::workers.
Referenced by IamPrimaryProcess(), and ProcessRoles().
◆ InDaemonMode()
bool InDaemonMode | ( | ) |
Definition at line 690 of file tools.cc.
References Config, opt_no_daemon, and SquidConfig::workers.
Referenced by Store::Disks::configure(), CpuAffinityCheck(), CpuAffinityInit(), Rock::SwapDir::needsDiskStrand(), NumberOfKids(), SquidMain(), StartUsingConfig(), Ipc::Mem::RegisteredRunner::useConfig(), and UsingSmp().
◆ keepCapabilities()
void keepCapabilities | ( | void | ) |
Definition at line 1122 of file tools.cc.
References Ip::Interceptor.
◆ leave_suid()
void leave_suid | ( | void | ) |
leave a privileged section. (Give up any privilegies) Routines that need privilegies can rap themselves in enter_suid() and leave_suid() To give upp all posibilites to gain privilegies use no_suid()
Definition at line 559 of file tools.cc.
References Config, Config2, DBG_CRITICAL, debugs, SquidConfig::effectiveGroup, SquidConfig2::effectiveGroupID, SquidConfig::effectiveUser, SquidConfig2::effectiveUserID, fatalf(), initgroups(), restoreCapabilities(), setTraceability(), and xstrerr().
Referenced by comm_set_transparent(), fatal(), fatal_dump(), htcpOpenPorts(), icpOpenPorts(), no_suid(), File::open(), Ipc::Coordinator::openListenSocket(), Ip::Intercept::ProbeForTproxy(), RemoveInstance(), setEffectiveUser(), squid_getrusage(), SquidMain(), Ipc::StartListening(), StartUsingConfig(), and watch_child().
◆ logsFlush()
◆ mail_warranty()
|
static |
Definition at line 115 of file tools.cc.
References SquidConfig::adminEmail, APP_SHORTNAME, Config, dead_msg(), SquidConfig::EmailFrom, SquidConfig::EmailProgram, NULL, tempnam(), uniqueHostname(), and xfree.
Referenced by death().
◆ makeTraceable()
|
static |
Make the process traceable if possible. Call setTraceability() instead! Traceable processes may support attachment via ptrace(2) or ktrace(2), debugging sysctls, hwpmc(4), dtrace(1) and core dumping.
Definition at line 288 of file tools.cc.
References debugs, Here, ToSBuf(), and xstrerr().
Referenced by setTraceability().
◆ no_suid()
void no_suid | ( | void | ) |
Definition at line 646 of file tools.cc.
References DBG_IMPORTANT, debugs, leave_suid(), restoreCapabilities(), setTraceability(), and xstrerr().
Referenced by ipcCreate(), mainInitialize(), and SquidMain().
◆ NumberOfKids()
int NumberOfKids | ( | ) |
Definition at line 724 of file tools.cc.
References SquidConfig::cacheSwap, Config, InDaemonMode(), Store::DiskConfig::n_strands, and SquidConfig::workers.
Referenced by CpuAffinityCheck(), IamPrimaryProcess(), Kids::init(), and UsingSmp().
◆ parseEtcHosts()
void parseEtcHosts | ( | void | ) |
Definition at line 949 of file tools.cc.
References SquidConfig::appendDomain, Config, DBG_IMPORTANT, debugs, SquidConfig::etcHostsPath, fqdncacheAddEntryFromHosts(), ipcacheAddEntryFromHosts(), O_TEXT, w_space, and xstrerr().
◆ PrintRusage()
void PrintRusage | ( | void | ) |
Definition at line 329 of file tools.cc.
References debug_log, rusage::ru_stime, rusage::ru_utime, rusage_cputime(), rusage_maxrss(), rusage_pagefaults(), and squid_getrusage().
Referenced by death(), fatal_common(), and SquidShutdown().
◆ ProcessRoles()
SBuf ProcessRoles | ( | ) |
Definition at line 739 of file tools.cc.
References SBuf::append(), IamCoordinatorProcess(), IamDiskProcess(), IamMasterProcess(), and IamWorkerProcess().
Referenced by mainInitialize().
◆ releaseServerSockets()
void releaseServerSockets | ( | void | ) |
Definition at line 92 of file tools.cc.
References clientConnectionsClose(), and icpClosePorts().
Referenced by death().
◆ restoreCapabilities()
|
static |
Definition at line 1133 of file tools.cc.
References Ip::Interceptor, and Ip::Qos::TheConfig.
Referenced by leave_suid(), and no_suid().
◆ rusage_cputime()
Definition at line 238 of file tools.cc.
References double, rusage::ru_stime, and rusage::ru_utime.
Referenced by GetCountersStats(), GetInfo(), PrintRusage(), snmp_prfSysFn(), and statAvgTick().
◆ rusage_maxrss()
Definition at line 253 of file tools.cc.
References rusage::ru_maxrss.
Referenced by GetInfo(), PrintRusage(), and snmp_prfSysFn().
◆ rusage_pagefaults()
Definition at line 274 of file tools.cc.
References rusage::ru_majflt.
Referenced by GetCountersStats(), GetInfo(), PrintRusage(), snmp_prfSysFn(), and statAvgTick().
◆ setMaxFD()
void setMaxFD | ( | void | ) |
Figure out the number of supported filedescriptors
Definition at line 762 of file tools.cc.
References Config, DBG_CRITICAL, debugs, SquidConfig::max_filedescriptors, Squid_MaxFD, and xstrerr().
Referenced by StartUsingConfig().
◆ setSystemLimits()
void setSystemLimits | ( | void | ) |
Definition at line 811 of file tools.cc.
References Config, DBG_CRITICAL, DBG_IMPORTANT, debugs, fatal_dump(), SquidConfig::max_filedescriptors, Squid_MaxFD, tmp_error_buf, and xstrerr().
Referenced by mainInitialize().
◆ setTraceability()
|
static |
Make the process traceable if necessary.
- See also
- makeTraceable()
Definition at line 314 of file tools.cc.
References Config, SquidConfig::coredump_dir, CurrentException(), DBG_IMPORTANT, debugs, Debug::Extra(), and makeTraceable().
Referenced by enter_suid(), leave_suid(), and no_suid().
◆ setUmask()
void setUmask | ( | mode_t | mask | ) |
Definition at line 1069 of file tools.cc.
Referenced by mainReconfigureFinish(), and SquidMain().
◆ sigusr2_handle()
void sigusr2_handle | ( | int | sig | ) |
Definition at line 433 of file tools.cc.
References DBG_CRITICAL, Debug::debugOptions, debugs, DebugSignal, Debug::parseOptions(), sigusr2_handle(), and xstrerr().
Referenced by mainHandleCommandLineOption(), mainInitialize(), sigusr2_handle(), watch_child(), and WIN32_svcHandler().
◆ squid_getrusage()
void squid_getrusage | ( | struct rusage * | r | ) |
Definition at line 180 of file tools.cc.
References enter_suid(), FALSE, leave_suid(), rusage::ru_majflt, rusage::ru_maxrss, rusage::ru_stime, and rusage::ru_utime.
Referenced by GetCountersStats(), GetInfo(), PrintRusage(), snmp_prfSysFn(), and statAvgTick().
◆ squid_signal()
Definition at line 873 of file tools.cc.
References DBG_CRITICAL, debugs, and xstrerr().
Referenced by mainInitialize(), and watch_child().
◆ strwordquote()
void strwordquote | ( | MemBuf * | mb, |
const char * | str | ||
) |
Definition at line 1080 of file tools.cc.
References MemBuf::append().
Referenced by Format::Format::assemble(), and makeExternalAclKey().
◆ uniqueHostname()
const char * uniqueHostname | ( | void | ) |
Definition at line 547 of file tools.cc.
References Config, debugs, getMyHostname(), and SquidConfig::uniqueHostname.
Referenced by clientReplyContext::buildReplyHeader(), configDoConfigure(), mail_warranty(), and snmp_confFn().
◆ UsingSmp()
bool UsingSmp | ( | ) |
Definition at line 696 of file tools.cc.
References InDaemonMode(), and NumberOfKids().
Referenced by Rock::SwapDir::create(), Rock::SwapDir::doReportStat(), Mgr::FunAction::dump(), Mgr::InfoAction::dump(), Ipc::Mem::Segment::Enabled(), Transients::EntryLimit(), MemStoreRr::finalizeConfig(), CollapsedForwarding::Init(), Rock::Rebuild::IsResponsible(), snmpConstructReponse(), SquidMain(), CacheManager::start(), Ipc::StartListening(), and statObjects().
◆ WaitForOnePid()
Compatibility wrapper function for waitpid \pid the pid of child process to wait for.
- Parameters
-
status the exit status returned by waitpid flags WNOHANG or 0
Definition at line 1180 of file tools.cc.
References pid.
Referenced by mainStartScript(), and WaitForAnyPid().
Variable Documentation
◆ DebugSignal
int DebugSignal = -1 |
Definition at line 73 of file tools.cc.
Referenced by sigusr2_handle().
◆ service_name
SBuf service_name(APP_SHORTNAME) | ( | APP_SHORTNAME | ) |
◆ tmp_error_buf
|
static |
Definition at line 89 of file tools.cc.
Referenced by setSystemLimits().