From 001d55dc4fd8caab03411a51337d147001db5771 Mon Sep 17 00:00:00 2001 From: Francesco Chemolli Date: Fri, 21 Sep 2012 15:27:44 +0200 Subject: [PATCH] Added some class documentation. Removed explicit "extern" markers from some functions --- src/CacheDigest.h | 27 +++++++------- src/CachePeer.h | 1 + src/HttpHeader.h | 2 +- src/HttpHeaderFieldInfo.h | 2 +- src/HttpHeaderFieldStat.h | 2 +- src/HttpHeaderTools.cc | 16 ++++---- src/HttpHeaderTools.h | 54 +++++++++++++-------------- src/IoStats.h | 2 +- src/RefreshPattern.h | 1 + src/RegexList.h | 1 + src/SquidConfig.h | 1 + src/acl/AclAddress.h | 1 + src/acl/AclDenyInfoList.h | 4 +- src/acl/AclNameList.h | 4 +- src/cache_cf.cc | 2 +- src/icmp/net_db.h | 36 +++++++++--------- src/log/CustomLog.h | 1 + src/mgr/ActionPasswordList.h | 3 +- src/neighbors.h | 72 ++++++++++++++++++------------------ src/store_rebuild.h | 2 + src/structs.h | 25 +++++++------ 21 files changed, 138 insertions(+), 121 deletions(-) diff --git a/src/CacheDigest.h b/src/CacheDigest.h index e0a81470b0..bcaf91fbb5 100644 --- a/src/CacheDigest.h +++ b/src/CacheDigest.h @@ -38,6 +38,7 @@ class CacheDigestGuessStats; class StoreEntry; +// currently a POD class CacheDigest { public: @@ -50,18 +51,18 @@ public: int del_count; /* number of deletions performed so far */ }; -extern CacheDigest *cacheDigestCreate(int capacity, int bpe); -extern void cacheDigestDestroy(CacheDigest * cd); -extern CacheDigest *cacheDigestClone(const CacheDigest * cd); -extern void cacheDigestClear(CacheDigest * cd); -extern void cacheDigestChangeCap(CacheDigest * cd, int new_cap); -extern int cacheDigestTest(const CacheDigest * cd, const cache_key * key); -extern void cacheDigestAdd(CacheDigest * cd, const cache_key * key); -extern void cacheDigestDel(CacheDigest * cd, const cache_key * key); -extern size_t cacheDigestCalcMaskSize(int cap, int bpe); -extern int cacheDigestBitUtil(const CacheDigest * cd); -extern void cacheDigestGuessStatsUpdate(CacheDigestGuessStats * stats, int real_hit, int guess_hit); -extern void cacheDigestGuessStatsReport(const CacheDigestGuessStats * stats, StoreEntry * sentry, const char *label); -extern void cacheDigestReport(CacheDigest * cd, const char *label, StoreEntry * e); +CacheDigest *cacheDigestCreate(int capacity, int bpe); +void cacheDigestDestroy(CacheDigest * cd); +CacheDigest *cacheDigestClone(const CacheDigest * cd); +void cacheDigestClear(CacheDigest * cd); +void cacheDigestChangeCap(CacheDigest * cd, int new_cap); +int cacheDigestTest(const CacheDigest * cd, const cache_key * key); +void cacheDigestAdd(CacheDigest * cd, const cache_key * key); +void cacheDigestDel(CacheDigest * cd, const cache_key * key); +size_t cacheDigestCalcMaskSize(int cap, int bpe); +int cacheDigestBitUtil(const CacheDigest * cd); +void cacheDigestGuessStatsUpdate(CacheDigestGuessStats * stats, int real_hit, int guess_hit); +void cacheDigestGuessStatsReport(const CacheDigestGuessStats * stats, StoreEntry * sentry, const char *label); +void cacheDigestReport(CacheDigest * cd, const char *label, StoreEntry * e); #endif /* SQUID_CACHEDIGEST_H_ */ diff --git a/src/CachePeer.h b/src/CachePeer.h index 2159199603..5634b196f9 100644 --- a/src/CachePeer.h +++ b/src/CachePeer.h @@ -42,6 +42,7 @@ class domain_type; class acl_access; class PeerDigest; +// currently a POD class CachePeer { public: diff --git a/src/HttpHeader.h b/src/HttpHeader.h index 1da59dc4cf..575cc3a9cb 100644 --- a/src/HttpHeader.h +++ b/src/HttpHeader.h @@ -44,7 +44,6 @@ class HttpHdrRange; class HttpHdrSc; class Packer; class StoreEntry; -class String; /* constant attributes of http header fields */ @@ -180,6 +179,7 @@ typedef enum { hoEnd } http_hdr_owner_type; +// currently a POD class HttpHeaderFieldAttrs { public: diff --git a/src/HttpHeaderFieldInfo.h b/src/HttpHeaderFieldInfo.h index 4634f8c8eb..1b19007990 100644 --- a/src/HttpHeaderFieldInfo.h +++ b/src/HttpHeaderFieldInfo.h @@ -32,7 +32,7 @@ #include "SquidString.h" #include "HttpHeaderFieldStat.h" -/* compiled version of HttpHeaderFieldAttrs plus stats */ +/// compiled version of HttpHeaderFieldAttrs plus stats. Currently a POD. class HttpHeaderFieldInfo { public: diff --git a/src/HttpHeaderFieldStat.h b/src/HttpHeaderFieldStat.h index 805255a617..c0f8d8b963 100644 --- a/src/HttpHeaderFieldStat.h +++ b/src/HttpHeaderFieldStat.h @@ -29,7 +29,7 @@ * */ -/// per field statistics +/// per field statistics. Currently a POD. class HttpHeaderFieldStat { public: diff --git a/src/HttpHeaderTools.cc b/src/HttpHeaderTools.cc index 4a2558f8f9..a49091bb52 100644 --- a/src/HttpHeaderTools.cc +++ b/src/HttpHeaderTools.cc @@ -327,7 +327,7 @@ httpHdrMangle(HttpHeaderEntry * e, HttpRequest * request, int req_or_rep) if (!hms) return 1; - const header_mangler *hm = hms->find(*e); + const headerMangler *hm = hms->find(*e); /* mangler or checklist went away. default allow */ if (!hm || !hm->access_list) { @@ -371,7 +371,7 @@ httpHdrMangleList(HttpHeader * l, HttpRequest * request, int req_or_rep) } static -void header_mangler_clean(header_mangler &m) +void header_mangler_clean(headerMangler &m) { aclDestroyAccessList(&m.access_list); safe_free(m.replacement); @@ -379,7 +379,7 @@ void header_mangler_clean(header_mangler &m) static void header_mangler_dump_access(StoreEntry * entry, const char *option, - const header_mangler &m, const char *name) + const headerMangler &m, const char *name) { if (m.access_list != NULL) { storeAppendPrintf(entry, "%s ", option); @@ -389,7 +389,7 @@ void header_mangler_dump_access(StoreEntry * entry, const char *option, static void header_mangler_dump_replacement(StoreEntry * entry, const char *option, - const header_mangler &m, const char *name) + const headerMangler &m, const char *name) { if (m.replacement) storeAppendPrintf(entry, "%s %s %s\n", option, name, m.replacement); @@ -445,7 +445,7 @@ HeaderManglers::dumpReplacement(StoreEntry * entry, const char *name) const header_mangler_dump_replacement(entry, name, all, "All"); } -header_mangler * +headerMangler * HeaderManglers::track(const char *name) { int id = httpHeaderIdByNameDef(name, strlen(name)); @@ -457,7 +457,7 @@ HeaderManglers::track(const char *name) id = HDR_OTHER; } - header_mangler *m = NULL; + headerMangler *m = NULL; if (id == HDR_ENUM_END) { m = &all; } else if (id == HDR_BAD_HDR) { @@ -475,13 +475,13 @@ HeaderManglers::setReplacement(const char *name, const char *value) { // for backword compatibility, we allow replacements to be configured // for headers w/o access rules, but such replacements are ignored - header_mangler *m = track(name); + headerMangler *m = track(name); safe_free(m->replacement); // overwrite old value if any m->replacement = xstrdup(value); } -const header_mangler * +const headerMangler * HeaderManglers::find(const HttpHeaderEntry &e) const { // a known header with a configured ACL list diff --git a/src/HttpHeaderTools.h b/src/HttpHeaderTools.h index 781a7e4711..bdaf6f7da6 100644 --- a/src/HttpHeaderTools.h +++ b/src/HttpHeaderTools.h @@ -15,20 +15,26 @@ #include #endif +class acl_access; +class ACLList; class HeaderWithAcl; +class HttpHeader; +class HttpHeaderFieldInfo; +class HttpRequest; +class StoreEntry; +class String; + typedef std::list HeaderWithAclList; -class acl_access; -class header_mangler +// Currently a POD +class headerMangler { public: acl_access *access_list; char *replacement; }; -class StoreEntry; - -/// A collection of header_mangler objects for a given message kind. +/// A collection of headerMangler objects for a given message kind. class HeaderManglers { public: @@ -36,10 +42,10 @@ public: ~HeaderManglers(); /// returns a header mangler for field e or nil if none was specified - const header_mangler *find(const HttpHeaderEntry &e) const; + const headerMangler *find(const HttpHeaderEntry &e) const; /// returns a mangler for the named header (known or custom) - header_mangler *track(const char *name); + headerMangler *track(const char *name); /// updates mangler for the named header with a replacement value void setReplacement(const char *name, const char *replacementValue); @@ -51,16 +57,16 @@ public: private: /// a name:mangler map; optimize: use unordered map or some such - typedef std::map ManglersByName; + typedef std::map ManglersByName; /// one mangler for each known header - header_mangler known[HDR_ENUM_END]; + headerMangler known[HDR_ENUM_END]; /// one mangler for each custom header ManglersByName custom; /// configured if some mangling ACL applies to all header names - header_mangler all; + headerMangler all; private: /* not implemented */ @@ -68,7 +74,6 @@ private: HeaderManglers &operator =(const HeaderManglers &); }; -class ACLList; class HeaderWithAcl { public: @@ -93,24 +98,19 @@ public: bool quoted; }; -extern int httpHeaderParseOffset(const char *start, int64_t * off); - -class HttpHeader; -class HttpHeaderFieldInfo; -class HttpRequest; -class String; +int httpHeaderParseOffset(const char *start, int64_t * off); -extern HttpHeaderFieldInfo *httpHeaderBuildFieldsInfo(const HttpHeaderFieldAttrs * attrs, int count); -extern void httpHeaderDestroyFieldsInfo(HttpHeaderFieldInfo * info, int count); -extern http_hdr_type httpHeaderIdByName(const char *name, size_t name_len, const HttpHeaderFieldInfo * attrs, int end); -extern http_hdr_type httpHeaderIdByNameDef(const char *name, int name_len); -extern const char *httpHeaderNameById(int id); -extern int httpHeaderHasConnDir(const HttpHeader * hdr, const char *directive); -extern int httpHeaderParseInt(const char *start, int *val); -extern void httpHeaderPutStrf(HttpHeader * hdr, http_hdr_type id, const char *fmt,...) PRINTF_FORMAT_ARG3; +HttpHeaderFieldInfo *httpHeaderBuildFieldsInfo(const HttpHeaderFieldAttrs * attrs, int count); +void httpHeaderDestroyFieldsInfo(HttpHeaderFieldInfo * info, int count); +http_hdr_type httpHeaderIdByName(const char *name, size_t name_len, const HttpHeaderFieldInfo * attrs, int end); +http_hdr_type httpHeaderIdByNameDef(const char *name, int name_len); +const char *httpHeaderNameById(int id); +int httpHeaderHasConnDir(const HttpHeader * hdr, const char *directive); +int httpHeaderParseInt(const char *start, int *val); +void httpHeaderPutStrf(HttpHeader * hdr, http_hdr_type id, const char *fmt,...) PRINTF_FORMAT_ARG3; -extern const char *getStringPrefix(const char *str, const char *end); +const char *getStringPrefix(const char *str, const char *end); -extern void httpHdrMangleList(HttpHeader *, HttpRequest *, int req_or_rep); +void httpHdrMangleList(HttpHeader *, HttpRequest *, int req_or_rep); #endif diff --git a/src/IoStats.h b/src/IoStats.h index 0f3353ebd8..0e6c0ac9f6 100644 --- a/src/IoStats.h +++ b/src/IoStats.h @@ -29,6 +29,7 @@ * */ +/// IO statistics. Currently a POD. class IoStats { public: @@ -41,7 +42,6 @@ public: int writes; int write_hist[histSize]; } - Http, Ftp, Gopher; }; diff --git a/src/RefreshPattern.h b/src/RefreshPattern.h index 0d7f9a9ab3..cac2486478 100644 --- a/src/RefreshPattern.h +++ b/src/RefreshPattern.h @@ -29,6 +29,7 @@ * */ +/// a representation of a refresh pattern. Currently a POD. class RefreshPattern { public: diff --git a/src/RegexList.h b/src/RegexList.h index df2d64b42f..840e7739b7 100644 --- a/src/RegexList.h +++ b/src/RegexList.h @@ -29,6 +29,7 @@ * */ +/// list of regular expressions. Currently a POD. class RegexList { public: diff --git a/src/SquidConfig.h b/src/SquidConfig.h index 8dc506ade6..88d6405a9d 100644 --- a/src/SquidConfig.h +++ b/src/SquidConfig.h @@ -60,6 +60,7 @@ namespace AnyP { class PortCfg; } +/// the representation of the configuration. POD. class SquidConfig { public: diff --git a/src/acl/AclAddress.h b/src/acl/AclAddress.h index 3fd848fb5d..ead7b36e4c 100644 --- a/src/acl/AclAddress.h +++ b/src/acl/AclAddress.h @@ -32,6 +32,7 @@ #include "ip/Address.h" #include "acl/Acl.h" +/// list of address-based ACLs. Currently a POD. class AclAddress { public: diff --git a/src/acl/AclDenyInfoList.h b/src/acl/AclDenyInfoList.h index 8dd546d8e9..b2798e3cd1 100644 --- a/src/acl/AclDenyInfoList.h +++ b/src/acl/AclDenyInfoList.h @@ -30,8 +30,10 @@ */ #include "err_type.h" -#include "acl/AclNameList.h" +class AclNameList; + +/// deny_info representation. Currently a POD. class AclDenyInfoList { public: diff --git a/src/acl/AclNameList.h b/src/acl/AclNameList.h index 6f7b08df96..5acbc7ba01 100644 --- a/src/acl/AclNameList.h +++ b/src/acl/AclNameList.h @@ -30,12 +30,14 @@ */ #include "defines.h" -//TODO: convert to a std::list + +/// list of name-based ACLs. Currently a POD. class AclNameList { public: char name[ACL_NAME_SZ]; AclNameList *next; }; +// TODO: convert to a std::list #endif /* SQUID_ACLNAMELIST_H_ */ diff --git a/src/cache_cf.cc b/src/cache_cf.cc index 9169b7d48f..92414559c1 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1735,7 +1735,7 @@ parse_http_header_access(HeaderManglers **pm) if (!*pm) *pm = new HeaderManglers; HeaderManglers *manglers = *pm; - header_mangler *mangler = manglers->track(t); + headerMangler *mangler = manglers->track(t); assert(mangler); parse_acl_access(&mangler->access_list); } diff --git a/src/icmp/net_db.h b/src/icmp/net_db.h index be38efb177..87bdaaca53 100644 --- a/src/icmp/net_db.h +++ b/src/icmp/net_db.h @@ -4,15 +4,15 @@ #include "hash.h" class CachePeer; +class HttpRequest; +class netdbEntry; +class StoreEntry; namespace Ip { class Address; }; -class StoreEntry; -class HttpRequest; -class netdbEntry; - +// POD class net_db_name { public: @@ -21,6 +21,7 @@ public: netdbEntry *net_db_entry; }; +// POD class net_db_peer { public: @@ -30,6 +31,7 @@ public: time_t expires; }; +// POD class netdbEntry { public: @@ -48,23 +50,23 @@ public: int n_peers; }; -extern void netdbInit(void); +void netdbInit(void); -extern void netdbHandlePingReply(const Ip::Address &from, int hops, int rtt); -extern void netdbPingSite(const char *hostname); +void netdbHandlePingReply(const Ip::Address &from, int hops, int rtt); +void netdbPingSite(const char *hostname); void netdbDump(StoreEntry *); -extern void netdbFreeMemory(void); -extern int netdbHostHops(const char *host); -extern int netdbHostRtt(const char *host); -extern void netdbUpdatePeer(HttpRequest *, CachePeer * e, int rtt, int hops); +void netdbFreeMemory(void); +int netdbHostHops(const char *host); +int netdbHostRtt(const char *host); +void netdbUpdatePeer(HttpRequest *, CachePeer * e, int rtt, int hops); -extern void netdbDeleteAddrNetwork(Ip::Address &addr); -extern void netdbBinaryExchange(StoreEntry *); -extern void netdbExchangeStart(void *); +void netdbDeleteAddrNetwork(Ip::Address &addr); +void netdbBinaryExchange(StoreEntry *); +void netdbExchangeStart(void *); -extern void netdbExchangeUpdatePeer(Ip::Address &, CachePeer *, double, double); -extern CachePeer *netdbClosestParent(HttpRequest *); -extern void netdbHostData(const char *host, int *samp, int *rtt, int *hops); +void netdbExchangeUpdatePeer(Ip::Address &, CachePeer *, double, double); +CachePeer *netdbClosestParent(HttpRequest *); +void netdbHostData(const char *host, int *samp, int *rtt, int *hops); #endif /* ICMP_NET_DB_H */ diff --git a/src/log/CustomLog.h b/src/log/CustomLog.h index 4c64343777..e995bc52e7 100644 --- a/src/log/CustomLog.h +++ b/src/log/CustomLog.h @@ -37,6 +37,7 @@ namespace Format { class Format; } +/// representaiton of a custom log directive. Currently a POD. class CustomLog { public: diff --git a/src/mgr/ActionPasswordList.h b/src/mgr/ActionPasswordList.h index c98cdcfe05..36ee10197c 100644 --- a/src/mgr/ActionPasswordList.h +++ b/src/mgr/ActionPasswordList.h @@ -32,7 +32,8 @@ class wordlist; namespace Mgr { -//TODO: refactor into a std::list-backed proper list. +//TODO: refactor into a std::list +/// list of cachemgr password authorization definitions. Currently a POD. class ActionPasswordList { public: diff --git a/src/neighbors.h b/src/neighbors.h index 3c47d51065..a946c38409 100644 --- a/src/neighbors.h +++ b/src/neighbors.h @@ -42,45 +42,45 @@ class HttpRequestMethod; class CachePeer; class StoreEntry; -extern CachePeer *getFirstPeer(void); -extern CachePeer *getFirstUpParent(HttpRequest *); -extern CachePeer *getNextPeer(CachePeer *); -extern CachePeer *getSingleParent(HttpRequest *); -extern int neighborsCount(HttpRequest *); -extern int neighborsUdpPing(HttpRequest *, - StoreEntry *, - IRCB * callback, - void *data, - int *exprep, - int *timeout); -extern void neighborAddAcl(const char *, const char *); +CachePeer *getFirstPeer(void); +CachePeer *getFirstUpParent(HttpRequest *); +CachePeer *getNextPeer(CachePeer *); +CachePeer *getSingleParent(HttpRequest *); +int neighborsCount(HttpRequest *); +int neighborsUdpPing(HttpRequest *, + StoreEntry *, + IRCB * callback, + void *data, + int *exprep, + int *timeout); +void neighborAddAcl(const char *, const char *); -extern void neighborsUdpAck(const cache_key *, icp_common_t *, const Ip::Address &); -extern void neighborAdd(const char *, const char *, int, int, int, int, int); -extern void neighbors_init(void); +void neighborsUdpAck(const cache_key *, icp_common_t *, const Ip::Address &); +void neighborAdd(const char *, const char *, int, int, int, int, int); +void neighbors_init(void); #if USE_HTCP -extern void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason); +void neighborsHtcpClear(StoreEntry *, const char *, HttpRequest *, const HttpRequestMethod &, htcp_clr_reason); #endif -extern CachePeer *peerFindByName(const char *); -extern CachePeer *peerFindByNameAndPort(const char *, unsigned short); -extern CachePeer *getDefaultParent(HttpRequest * request); -extern CachePeer *getRoundRobinParent(HttpRequest * request); -extern CachePeer *getWeightedRoundRobinParent(HttpRequest * request); -extern void peerClearRRStart(void); -extern void peerClearRR(void); -extern lookup_t peerDigestLookup(CachePeer * p, HttpRequest * request); -extern CachePeer *neighborsDigestSelect(HttpRequest * request); -extern void peerNoteDigestLookup(HttpRequest * request, CachePeer * p, lookup_t lookup); -extern void peerNoteDigestGone(CachePeer * p); -extern int neighborUp(const CachePeer * e); -extern CBDUNL peerDestroy; -extern const char *neighborTypeStr(const CachePeer * e); -extern peer_t neighborType(const CachePeer *, const HttpRequest *); -extern void peerConnectFailed(CachePeer *); -extern void peerConnectSucceded(CachePeer *); -extern void dump_peer_options(StoreEntry *, CachePeer *); -extern int peerHTTPOkay(const CachePeer *, HttpRequest *); +CachePeer *peerFindByName(const char *); +CachePeer *peerFindByNameAndPort(const char *, unsigned short); +CachePeer *getDefaultParent(HttpRequest * request); +CachePeer *getRoundRobinParent(HttpRequest * request); +CachePeer *getWeightedRoundRobinParent(HttpRequest * request); +void peerClearRRStart(void); +void peerClearRR(void); +lookup_t peerDigestLookup(CachePeer * p, HttpRequest * request); +CachePeer *neighborsDigestSelect(HttpRequest * request); +void peerNoteDigestLookup(HttpRequest * request, CachePeer * p, lookup_t lookup); +void peerNoteDigestGone(CachePeer * p); +int neighborUp(const CachePeer * e); +CBDUNL peerDestroy; +const char *neighborTypeStr(const CachePeer * e); +peer_t neighborType(const CachePeer *, const HttpRequest *); +void peerConnectFailed(CachePeer *); +void peerConnectSucceded(CachePeer *); +void dump_peer_options(StoreEntry *, CachePeer *); +int peerHTTPOkay(const CachePeer *, HttpRequest *); -extern CachePeer *whichPeer(const Ip::Address &from); +CachePeer *whichPeer(const Ip::Address &from); #endif /* SQUID_NEIGHBORS_H_ */ diff --git a/src/store_rebuild.h b/src/store_rebuild.h index 1d2de170c2..6dc3f646d5 100644 --- a/src/store_rebuild.h +++ b/src/store_rebuild.h @@ -31,6 +31,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. * */ + +// currently a POD class StoreRebuildData { public: diff --git a/src/structs.h b/src/structs.h index b6ba14b444..f3996bbf6e 100644 --- a/src/structs.h +++ b/src/structs.h @@ -29,23 +29,24 @@ #ifndef SQUID_STRUCTS_H #define SQUID_STRUCTS_H +#define PEER_MULTICAST_SIBLINGS 1 + #include "cbdata.h" #include "defines.h" #include "dlink.h" #include "hash.h" -#include "ip/Address.h" - -/* needed for the global config */ #include "HttpHeader.h" #include "HttpHeaderTools.h" - -#define PEER_MULTICAST_SIBLINGS 1 +#include "ip/Address.h" class ACLChecklist; +class ACLList; +class PeerDigest; #if SQUID_SNMP #include "snmp_session.h" +// POD class snmp_request_t { public: @@ -65,9 +66,7 @@ public: struct snmp_session session; }; -#endif - -class ACLList; +#endif /* SQUID_SNMP */ struct acl_tos { acl_tos *next; @@ -98,10 +97,9 @@ struct acl_size_t { #include "HelperChildConfig.h" -/* forward decl for SquidConfig, see RemovalPolicy.h */ - class CpuAffinityMap; +// POD class close_handler { public: @@ -110,6 +108,7 @@ public: close_handler *next; }; +// POD class dread_ctrl { public: @@ -122,6 +121,7 @@ public: void *client_data; }; +// POD class dwrite_q { public: @@ -141,6 +141,7 @@ struct _fde_disk { off_t offset; }; +// POD class http_state_flags { public: @@ -161,6 +162,7 @@ public: unsigned int sentLastChunk:1; ///< do not try to write last-chunk again }; +// POD class domain_ping { public: @@ -169,6 +171,7 @@ public: domain_ping *next; }; +// POD class domain_type { public: @@ -177,8 +180,6 @@ public: domain_type *next; }; -class PeerDigest; - #if USE_SSL struct _sslproxy_cert_sign { int alg; -- 2.39.2