****************************************************************************/
/*
-* FIXME: the os2 port of bash seems to have problems checking
+* XXX: the os2 port of bash seems to have problems checking
* the return codes of programs in if statements. These options
* need to be overridden.
*/
AC_MSG_NOTICE([skipping libmalloc check for $host])
;;
*)
- #used later. FIXME
+ # XXX: used later
AC_CHECK_LIB(malloc, main)
;;
esac
state information is stored in the clientSocketContext
structure. With HTTP/1.1 we may have multiple requests from
a single TCP connection.
-\todo DOCS: find out what has replaced clientSocketContext since it seems to not exist now.
+TODO: find out what has replaced clientSocketContext since it seems to not exist now.
\section ClientSideRequest Client Side Request
\par
and setup the initial client stream for internal requests.
Temporary state for this processing is held in a
clientRequestContext.
-\todo DOCS: find out what has replaced clientRequestContext since it seems not to exist now.
+TODO: find out what has replaced clientRequestContext since it seems not to exist now.
\section ClientSideReply Client Side Reply
\par
network sockets. These routines do not support queuing
multiple blocks of data for writing. Consequently, a
callback occurs for every write request.
-\todo DOCS: decide what to do for comm_poll() since its either obsolete or uses other names.
+TODO: decide what to do for comm_poll() since its either obsolete or uses other names.
\section FileDiskIO File/Disk I/O
\par
The cache manager provides essentially "read-only" access
to information. It does not provide a method for configuring
Squid while it is running.
-\todo DOCS: get cachemgr.cgi documenting
+TODO: get cachemgr.cgi documenting
\section NetworkMeasurementDB Network Measurement Database
\par
\par
The primary configuration file specification is in the file
cf.data.pre. A simple utility program, cf_gen,
- reads the cf.data.pre file and generates cf_parser.c
- and squid.conf. cf_parser.c is included directly
- into cache_cf.c at compile time.
-\todo DOCS: get cf.data.pre documenting
-\todo DOCS: get squid.conf documenting
-\todo DOCS: get cf_gen documenting and linking.
+ reads the cf.data.pre file and generates cf_parser.cci
+ and squid.conf. cf_parser.cci is included directly
+ into cache_cf.cc at compile time.
+TODO: get cf.data.pre documenting
+TODO: get squid.conf documenting
+TODO: get cf_gen documenting and linking.
\section Callback Data Allocator
\par
the callback function is executed. The routines in cbdata.c
provide a uniform method for managing callback data memory,
canceling callbacks, and preventing erroneous memory accesses.
-\todo DOCS: get callback_data (object?) linking or replacement named.
+TODO: get callback_data (object?) linking or replacement named.
\section RefCountDataAllocator Refcount Data Allocator
\since Squid 3.0
allows us to create automatic reference counting pointers, that will
free objects when they are no longer needed. With some care these
objects can be passed to functions needed Callback Data pointers.
-\todo DOCS: get cbdata documenting and linking.
+TODO: get cbdata documenting and linking.
\section Debugging Debugging
\par
level for that section, it will be shown. This description
probably sounds more complicated than it really is.
File: debug.c. Note that debugs() itself is a macro.
-\todo DOCS: get debugs() documenting as if it was a function.
+TODO: get debugs() documenting as if it was a function.
\section ErrorGeneration Error Generation
\par
ICP queries from Netcache/Netapp caches; they use
a different version number and a slightly different message
format.
-\todo DOCS: get RFCs linked from ietf
+TODO: get RFCs linked from ietf
\section IdentLookups Ident Lookups
\par
/**
\defgroup Timeouts Timeouts
- \todo DOCS: document Timeouts.
+ * TODO: Write Documentation about Timeouts.
*/
/**
\defgroup ServerProtocolHTTP HTTP
\ingroup ServerProtocol
- \todo Write Documentation about HTTP
+ * TODO: Write Documentation about HTTP.
*/
/**
/**
\defgroup ServerProtocolWAIS WAIS
\ingroup ServerProtocol
- \todo Write Documentation about Wais
+ * TODO: Write Documentation about Wais.
*/
/**
\defgroup ServerProtocolPassthru Passthru
\ingroup ServerProtocol
- \todo Write Documentation about Passthru
+ * TODO: Write Documentation about Passthru.
*/
/* Encodes a string in one go, including any padding at the end.
* Generates exactly BASE64_ENCODE_RAW_LENGTH(length) bytes of output.
- * Supports overlapped operation, if src <= dst. FIXME: Use of overlap
- * is deprecated, if needed there should be a separate public function
+ * Supports overlapped operation, if src <= dst.
+ * TODO: Use of overlap is deprecated, if needed there should be a separate public function
* to do that.*/
void
base64_encode_raw(char *dst, size_t length, const uint8_t *src);
session.c: all session routine code is here
-todo: a list of things I would like to do ...
-
-
-
# list. This list is created by putting \todo commands in the documentation.
# The default value is: YES.
-GENERATE_TODOLIST = YES
+GENERATE_TODOLIST = NO
# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
# list. This list is created by putting \test commands in the documentation.
# exclude all test directories for example use the pattern */test/*
EXCLUDE_PATTERNS = */CVS/* \
+ */.git* \
*/lib/libTrie/* \
*/libltdl/* \
*/Programming-Guide/html/* \
// are stored in hier.tcpServer
/** \brief This subclass holds log info for HTTP protocol
- * \todo Inner class declarations should be moved outside
- * \todo details of HTTP held in the parent class need moving into here.
+ * TODO: Inner class declarations should be moved outside
+ * TODO: details of HTTP held in the parent class need moving into here.
*/
class HttpDetails
{
} http;
/** \brief This subclass holds log info for ICP protocol
- * \todo Inner class declarations should be moved outside
+ * TODO: Inner class declarations should be moved outside
*/
class IcpDetails
{
} icp;
/** \brief This subclass holds log info for HTCP protocol
- * \todo Inner class declarations should be moved outside
+ * TODO: Inner class declarations should be moved outside
*/
class HtcpDetails
{
#endif
/** \brief This subclass holds log info for Squid internal stats
- * \todo Inner class declarations should be moved outside
- * \todo some details relevant to particular protocols need shuffling to other sub-classes
- * \todo this object field need renaming to 'squid' or something.
+ * TODO: Inner class declarations should be moved outside
+ * TODO: some details relevant to particular protocols need shuffling to other sub-classes
+ * TODO: this object field need renaming to 'squid' or something.
*/
class CacheDetails
{
} cache;
/** \brief This subclass holds log info for various headers in raw format
- * \todo shuffle this to the relevant protocol section.
+ * TODO: shuffle this to the relevant protocol section.
*/
class Headers
{
#if USE_ADAPTATION
/** \brief This subclass holds general adaptation log info.
- * \todo Inner class declarations should be moved outside.
+ * TODO: Inner class declarations should be moved outside.
*/
class AdaptationDetails
{
#if ICAP_CLIENT
/** \brief This subclass holds log info for ICAP part of request
- * \todo Inner class declarations should be moved outside
+ * TODO: Inner class declarations should be moved outside
*/
class IcapLogEntry
{
/*
\ingroup DelayPoolsAPI
*
- \todo Next steps: make this a composite, and TypeLabel a composite method.
+ * TODO: Next steps: make this a composite, and TypeLabel a composite method.
* Then we have a legacy composite which returns class 1/2/3, and new
* composites which return a descriptor of some sort.
*/
pool = NULL;
}
-/** \todo XXX create DelayIdComposite.cc */
+// TODO: create DelayIdComposite.cc
void
CompositePoolNode::delayRead(DeferredRead const &aRead)
{
bool
DescriptorSet::add(int fd)
{
- assert(0 <= fd && fd < capacity_); // \todo: replace with Must()
+ assert(0 <= fd && fd < capacity_); // TODO: replace with Must()
if (has(fd))
return false; // already have it
- assert(size_ < capacity_); // \todo: replace with Must()
+ assert(size_ < capacity_); // TODO: replace with Must()
const int pos = size_;
++size_;
index_[fd] = pos;
bool
DescriptorSet::del(int fd)
{
- assert(0 <= fd && fd < capacity_); // \todo: here and below, use Must()
+ assert(0 <= fd && fd < capacity_); // TODO: here and below, use Must()
if (!has(fd))
return false; // we do not have it
void
DescriptorSet::print(std::ostream &os) const
{
- // \todo add "name" if the set is used for more than just half-closed FDs
+ // TODO: add "name" if the set is used for more than just half-closed FDs
os << size_ << " FDs";
}
#include <iosfwd>
-/** \ingroup Comm
-
- \todo: Should we use std::set<int> with its flexibility? Our implementation
+/* TODO: Should we use std::set<int> with its flexibility? Our implementation
has constant overhead, which is smaller than log(n) of std::set.
-
-an unordered collection of unique descriptors with O(1) add/del/has ops */
+*/
+/// An unordered collection of unique descriptors with O(1) add/del/has ops
class DescriptorSet
{
public:
if (slot < 0) {
/* No free slot? Callback error, and return */
- fatal("Aiee! out of aiocb slots! - FIXME and wrap file_read\n");
+ fatal("Aiee! out of aiocb slots! - TODO fix and wrap file_read\n");
debugs(79, DBG_IMPORTANT, "WARNING: out of aiocb slots!");
/* fall back to blocking method */
// file_read(fd, request->buf, request->len, request->offset, callback, data);
/* Initiate aio */
if (aio_read(&qe->aq_e_aiocb) < 0) {
int xerrno = errno;
- fatalf("Aiee! aio_read() returned error (%d) FIXME and wrap file_read !\n", xerrno);
+ fatalf("Aiee! aio_read() returned error (%d) TODO fix and wrap file_read !\n", xerrno);
debugs(79, DBG_IMPORTANT, "WARNING: aio_read() returned error: " << xstrerr(xerrno));
/* fall back to blocking method */
// file_read(fd, request->buf, request->len, request->offset, callback, data);
if (slot < 0) {
/* No free slot? Callback error, and return */
- fatal("Aiee! out of aiocb slots FIXME and wrap file_write !\n");
+ fatal("Aiee! out of aiocb slots TODO fix and wrap file_write !\n");
debugs(79, DBG_IMPORTANT, "WARNING: out of aiocb slots!");
/* fall back to blocking method */
// file_write(fd, offset, buf, len, callback, data, freefunc);
/* Initiate aio */
if (aio_write(&qe->aq_e_aiocb) < 0) {
int xerrno = errno;
- fatalf("Aiee! aio_write() returned error (%d) FIXME and wrap file_write !\n", xerrno);
+ fatalf("Aiee! aio_write() returned error (%d) TODO fix and wrap file_write !\n", xerrno);
debugs(79, DBG_IMPORTANT, "WARNING: aio_write() returned error: " << xstrerr(xerrno));
/* fall back to blocking method */
// file_write(fd, offset, buf, len, callback, data, freefunc);
int64_t elength; /**< entity length, not content length */
};
-/** \todo CLEANUP: Move httpHdrContRange* functions into the class methods */
+// TODO: move httpHdrContRange* functions into the class methods
HttpHdrContRange *httpHdrContRangeCreate(void);
HttpHdrContRange *httpHdrContRangeParseCreate(const char *crange_spec);
merge (goods);
debugs(64, 3, "HttpHdrRange::canonize: finished with " << specs.size() <<
" specs");
- return specs.size() > 0; // fixme, should return bool
+ return specs.size() > 0; // TODO: should return bool
}
/* hack: returns true if range specs are too "complex" for Squid to handle */
/* this table is used for parsing surrogate control header */
/* order must match that of enum http_hdr_sc_type. The constraint is verified at initialization time */
-//todo: implement constraint
+// TODO: implement constraint
static const LookupTable<http_hdr_sc_type>::Record ScAttrs[] {
{"no-store", SC_NO_STORE},
{"no-store-remote", SC_NO_STORE_REMOTE},
bool parse(const String *str);
void packInto(Packable * p) const;
void updateStats(StatHist *) const;
- HttpHdrScTarget * getMergedTarget (const char *ourtarget); //todo: make const?
+ HttpHdrScTarget * getMergedTarget(const char *ourtarget); // TODO: make const?
void setMaxAge(char const *target, int max_age);
void addTarget(HttpHdrScTarget *t);
void addTargetAtTail(HttpHdrScTarget *t);
static icp_common_t *CreateMessage(icp_opcode opcode, int flags, const char *url, int reqnum, int pad);
};
-/**
- \ingroup ServerProtocolICPAPI
- \todo mempool this
- */
+// TODO: mempool this
class ICPState: public StoreClient
{
$(AWK) -f $(srcdir)/cf_gen_defines <$(srcdir)/cf.data.pre >$@ || ($(RM) -f $@ && exit 1)
-## FIXME: generate a sed command file from configure. Then this doesn't
+## TODO: generate a sed command file from configure. Then this doesn't
## depend on the Makefile.
cf.data: cf.data.pre Makefile
sed \
Mgr::RegisterAction("cpu_profile", "CPU Profiling Stats", xprof_summary, 0, 1);
}
-// FIXME:
-// this gets colled once per event. This doesn't seem to make much sense,
-// does it?
static hrtime_t now;
+
+// TODO: this gets called once per event. Make it only happen when enabling xprof.
static void
xprof_Init(void)
{
Ip::Address snmp_incoming;
Ip::Address snmp_outgoing;
#endif
- /* FIXME INET6 : this should really be a CIDR value */
+ // TODO: this should really be a CIDR value
Ip::Address client_netmask;
} Addrs;
size_t tcpRcvBufsz;
int falseHits = 0;
int trueMisses = 0;
int falseMisses = 0;
- int closeHits = 0; /// \todo: temporary remove it later
+ int closeHits = 0; // TODO: temporary. remove it later
};
#endif
* \note the default constructor doesn't fully initialize.
* you have to call one of the *init functions to specialize the
* histogram
- * \todo merge functionality from the *init functions to the constructor and
+ * TODO: merge functionality from the *init functions to the constructor and
* drop these
- * \todo specialize the class in a small hierarchy so that all
+ * TODO: specialize the class in a small hierarchy so that all
* relevant initializations are done at build-time
*/
StatHist() = default;
/// for eventual removal from the Store.
void releaseRequest(const bool shareable = false);
void negativeCache();
- bool cacheNegatively(); /** \todo argh, why both? */
+ bool cacheNegatively(); // TODO: why both negativeCache() and cacheNegatively() ?
void invokeHandlers();
void cacheInMemory(); ///< start or continue storing in memory cache
void swapOut();
* configure.ac must be updated to autogenerate a Makefile in
* \em src/fs/foo/ from a Makefile.in file.
*
- \todo DOCS: add template addition to configure.ac for storage module addition.
- \todo DOCS: add template Makefile.am for storage module addition.
+ * TODO: DOCS: add template addition to configure.ac for storage module addition.
+ * TODO: DOCS: add template Makefile.am for storage module addition.
*
\par
* configure will take a list of storage types through the
/**
\ingroup SwapStoreAPI
- \todo AYJ: for critical lists like this we should use A=64,B=65 etc to enforce and reserve values.
+ * XXX: for critical lists like this we should use A=64,B=65 etc to enforce and reserve values.
\note NOTE! We must preserve the order of this list!
*
\section StoreSwapMeta Store "swap meta" Description
*/
STORE_META_HITMETERING,
- /// \todo DOCS: document.
+ // TODO: document this TLV type code
STORE_META_VALID,
/**
*/
STORE_META_STD_LFS,
+ // TODO: document this TLV type code
STORE_META_OBJSIZE,
- STORE_META_STOREURL, /* the store url, if different to the normal URL */
- STORE_META_VARY_ID, /* Unique ID linking variants */
+ STORE_META_STOREURL, /**< the Store-ID url, if different to the normal URL */
+ STORE_META_VARY_ID, /**< Unique ID linking variants */
STORE_META_END
};
checklist->dst_rdns = xstrdup(fqdn);
return data->match(fqdn);
} else if (!checklist->destinationDomainChecked()) {
- /* FIXME: Using AclMatchedName here is not OO correct. Should find a way to the current acl */
+ // TODO: Using AclMatchedName here is not OO correct. Should find a way to the current acl
debugs(28, 3, "Can't yet compare '" << AclMatchedName << "' ACL for " << checklist->request->url.host());
if (checklist->goAsync(DestinationDomainLookup::Instance()))
return -1;
Ip::Address addr2;
- Ip::Address mask; /**< \todo This should perhapse be stored as a CIDR range now instead of a full IP mask. */
+ Ip::Address mask; // TODO: should use a CIDR range
acl_ip_data *next; /**< used for parsing, not for storing */
if (fqdn) {
return data->match(fqdn);
} else if (!checklist->sourceDomainChecked()) {
- /* FIXME: Using AclMatchedName here is not OO correct. Should find a way to the current acl */
+ // TODO: Using AclMatchedName here is not OO correct. Should find a way to the current acl
debugs(28, 3, "aclMatchAcl: Can't yet compare '" << AclMatchedName << "' ACL for '" << checklist->src_addr << "'");
if (checklist->goAsync(SourceDomainLookup::Instance()))
return -1;
# This file is supposed to run all the tests required to identify which
# configured modules are able to be built in this environment
-# FIXME: de-duplicate $enable_external_acl_helpers list containing double entries.
+# TODO: de-duplicate $enable_external_acl_helpers list containing double entries.
#define list of modules to build
auto_ext_acl_modules=no
debugs(93, 8, HERE << "callback answer=" << answer);
AccessCheck *ac = (AccessCheck*)data;
- /** \todo AYJ 2008-06-12: If answer == ACCESS_AUTH_REQUIRED
+ /* TODO: AYJ 2008-06-12: If answer == ACCESS_AUTH_REQUIRED
* we should be kicking off an authentication before continuing
* with this request. see bug 2400 for details.
*/
Header *header; // parsed HTTP status/request line and headers
/// Copy of header->body_pipe, in case somebody moves the original.
- /// \todo Find and fix the code that moves (if any) and remove this.
+ /// TODO: Find and fix the code that moves (if any) and remove this.
BodyPipePointer body_pipe;
private:
return FindService(services[pos]);
}
-/// \todo: optimize to cut search short instead of looking for the best svc
+// TODO: optimize to cut search short instead of looking for the best svc
bool
Adaptation::ServiceGroup::wants(const ServiceFilter &filter) const
{
return absolute_;
}
-/** \todo AYJ: Performance: This is an *almost* duplicate of HttpRequest::effectiveRequestUri(). But elides the query-string.
+/* XXX: Performance: This is an *almost* duplicate of HttpRequest::effectiveRequestUri(). But elides the query-string.
* After copying it on in the first place! Would be less code to merge the two with a flag parameter.
* and never copy the query-string part in the first place
*/
* If a singleton, delete will not occur. if not a singleton (future),
* delete will occur when no references are held.
*
- \todo we need a 'done for reconfigure' and a 'done permanently' concept.
+ * TODO: need a 'done for reconfigure' and a 'done permanently' concept.
*/
virtual void done();
#include <cstring>
#include <iostream>
#include <string>
-#include <vector> //todo: turn into multimap
+#include <vector>
#include <syslog.h>
#include "auth/basic/SMB_LM/msntauth.h"
# This file is supposed to run all the tests required to identify which
# configured modules are able to be built in this environment
-# FIXME: de-duplicate $enable_auth_basic list containing double entries.
+# TODO: de-duplicate $enable_auth_basic list containing double entries.
#not specified. Inherit global
if test "x$enable_auth_basic" = "x"; then
# This file is supposed to run all the tests required to identify which
# configured modules are able to be built in this environment
-# FIXME: de-duplicate $enable_auth_digest list containing double entries.
+# TODO: de-duplicate $enable_auth_digest list containing double entries.
#not specified. Inherit global
if test "x$enable_auth_digest" = "x"; then
# This file is supposed to run all the tests required to identify which
# configured modules are able to be built in this environment
-# FIXME: de-duplicate $enable_auth_negotiate list containing double entries.
+# TODO: de-duplicate $enable_auth_negotiate list containing double entries.
#not specified. Inherit global
if test "x$enable_auth_negotiate" = "x"; then
# This file is supposed to run all the tests required to identify which
# configured modules are able to be built in this environment
-# FIXME: de-duplicate $enable_auth_ntlm list containing double entries.
+# TODO: de-duplicate $enable_auth_ntlm list containing double entries.
#not specified. Inherit global
if test "x$enable_auth_ntlm" = "x"; then
return !isCanceled;
}
-/// \todo make this method const by providing a const getDialer()
+// TODO: make this method const by providing a const getDialer()
void
AsyncCall::print(std::ostream &os)
{
class CallDialer;
class AsyncCallQueue;
-/**
- \todo add unique call IDs
- \todo CBDATA_CLASS kids
- \ingroup AsyncCallsAPI
- */
class AsyncCall: public RefCountable
{
public:
* - useful for debugging and insecure request/response matching;
* - sequential IDs within a class except when wrapping;
* - always positive IDs.
- * \todo: add creation/destruction debugging?
+ * TODO: add creation/destruction debugging?
*/
template <class Class, class ValueType = InstanceIdDefaultValueType>
class InstanceId
MEMPROXY_CLASS(cbdata);
#endif
- /** \todo examine making cbdata templated on this - so we get type
+ /* TODO: examine making cbdata templated on this - so we get type
* safe access to data - RBC 20030902 */
public:
#if USE_CBDATA_DEBUG
return;
\endcode
*
- \todo rather than each node undeleting the next, have a clientStreamDelete that walks the list.
+ * TODO: rather than each node undeleting the next, have a clientStreamDelete that walks the list.
*/
CBDATA_CLASS_INIT(clientStreamNode);
\li satisfies the read request, or
\li inserts a new node above it and calls clientStreamRead(), or
\li calls clientStreamRead()
- \todo DOCS: make the above list nested.
*
\par
* There is no requirement for the Read parameters from different
*
\section WhatsInANode Whats in a node
*
- \todo ClientStreams: These details should really be codified as a class which all ClientStream nodes inherit from.
+ * TODO: ClientStreams: These details should really be codified as a class which all ClientStream nodes inherit from.
*
\par Each node must have:
\li read method - to allow loose coupling in the pipeline. (The reader may
* Make a new entry to hold the reply to be written
* to the client.
*/
- /* FIXME: This doesn't need to go through the store. Simply
+ /* TODO: This doesn't need to go through the store. Simply
* push down the client chain
*/
createStoreEntry(http->request->method, RequestFlags());
reply->sline.status() == Http::scUnauthorized)
) {
/* Add authentication header */
- /*! \todo alter errorstate to be accel on|off aware. The 0 on the next line
+ /* TODO: alter errorstate to be accel on|off aware. The 0 on the next line
* depends on authenticate behaviour: all schemes to date send no extra
* data on 407/401 responses, and do not check the accel state on 401/407
* responses
/* this is an internally created
* request, not subject to acceleration
* target overrides */
- /*
- * FIXME? Do we want to detect and handle internal requests of internal
- * objects ?
- */
+ // TODO: detect and handle internal requests of internal objects?
/* Internally created requests cannot have bodies today */
request->content_length = 0;
break;
}
- /* FIXME PIPELINE: This is inaccurate during pipelining */
+ /* XXX PIPELINE: This is inaccurate during pipelining */
if (http->getConn() != NULL && Comm::IsConnOpen(http->getConn()->clientConnection))
fd_note(http->getConn()->clientConnection->fd, http->uri);
data.listenConn->close();
data.listenConn = NULL;
debugs(9, DBG_IMPORTANT, "FTP AcceptDataConnection: " << io.conn << ": " << xstrerr(io.xerrno));
- /** \todo Need to send error message on control channel*/
+ // TODO: need to send error message on control channel
ftpFail(this);
return;
}
/**
* A hack to ensure we do not double-complete on the forward entry.
*
- \todo Ftp::Gateway logic should probably be rewritten to avoid
+ * TODO: Ftp::Gateway logic should probably be rewritten to avoid
* double-completion or FwdState should be rewritten to allow it.
*/
void
* (but we may still be waiting for 226 from the FTP server) and
* also when we get that 226 from the server (and adaptation is done).
*
- \todo Rewrite FwdState to ignore double completion?
+ * TODO: Rewrite FwdState to ignore double completion?
*/
void
Ftp::Relay::completeForwarding()
* We use standard URI-encoding on the second / making it
* ftp:host:port/%2froot/path AKA 'the FTP %2f hack'.
*
- * \todo Should be a URL class API call.
+ * TODO: Should be an AnyP::Uri member
*/
const SBuf &UrlWith2f(HttpRequest *);
private:
bool inited_;
}
+ parserState; // TODO: refactor this to somewhere else
- parserState; /* todo factor this off somewhere else; */
ESIVarState *varState;
ESIElement::Pointer tree;
}
/* ok.. no data sent, try to pull more data in from upstream.
- * FIXME: Don't try thisNode if we have finished reading the template
+ * TODO: Don't try thisNode if we have finished reading the template
*/
if (!context->flags.finishedtemplate && !context->reading()
&& !context->cachedASTInUse) {
while (buffered.getRaw() && !flags.error)
parseOneBuffer();
- } catch (Esi::ErrorDetail &errMsg) { // FIXME: non-const for c_str()
+ } catch (Esi::ErrorDetail &errMsg) { // XXX: non-const for c_str()
// level-2: these are protocol/syntax errors from upstream
debugs(86, 2, "WARNING: ESI syntax error: " << errMsg);
setError();
*/
debugs(86, 5, "ESIIncludeNew: Requesting alternate '" << attr[i+1] << "'");
- assert (alt.getRaw() == NULL); /* TODO: FIXME */
+ assert (alt.getRaw() == NULL); /* TODO: fix? */
alt = ESIStreamContextNew (this);
assert (alt.getRaw() != NULL);
alturl = xstrdup(attr[i+1]);
for (size_t i = 0; i < processedcount; ++i) {
elements[i]->render(output);
FinishAnElement(elements[i], i);
- /* FIXME: pass a ESISegment ** ? */
+ // TODO: pass an "ESISegment **" ?
output = output->tail();
}
delete currentFunction;
}
-/* XXX FIXME: this should be comma delimited, no? */
+/* XXX: this should be comma delimited, no? */
void
ESIVarState::buildVary (HttpReply *rep)
{
class external_acl
{
- /* FIXME: These are not really cbdata, but it is an easy way
+ /* XXX: These are not really cbdata, but it is an easy way
* to get them pooled, refcounted, accounted and freed properly...
+ * Use RefCountable MEMPROXY_CLASS instead
*/
CBDATA_CLASS(external_acl);
/*LFT_REQUEST_SIZE_BODY_NO_TE, */
/* original Status-Line details received from server */
- // XXX: todo
+ // TODO: implement server detail logging
/* Status-Line details sent to the client */
- // XXX: todo
+ // TODO: implement server detail logging
/* response Status-Line details (legacy, filtered) */
LFT_HTTP_SENT_STATUS_CODE_OLD_30,
bool space;
bool zero;
int divisor; // class invariant: MUST NOT be zero.
- Token *next; /* todo: move from linked list to array */
+ Token *next; // TODO: move from linked list to array
private:
const char *scanForToken(TokenTableEntry const table[], const char *cur);
StoreSearchUFS(RefCount<UFSSwapDir> sd);
virtual ~StoreSearchUFS();
- /** \todo Iterator API - garh, wrong place */
+ // TODO: misplaced Iterator API
/**
* callback the client when a new StoreEntry is available
* or an error occurs
};
std::queue<Ufs::UFSStoreState::_queued_write> pending_writes;
- /** \todo These should be in the IO strategy */
+ // TODO: These should be in the IO strategy
struct {
/**
} else if (reply && reply->contentRange()) {
/* request does not have ranges, but reply does */
- /** \todo FIXME: should use range_iter_pos on reply, as soon as reply->content_range
+ /* TODO: should use range_iter_pos on reply, as soon as reply->content_range
* becomes HttpHdrRange rather than HttpHdrRangeSpec.
*/
return http->out.offset + reply->contentRange()->spec.offset;
# This file is supposed to run all the tests required to identify which
# configured modules are able to be built in this environment
-# FIXME: de-duplicate $enable_url_rewrite_helpers list containing double entries.
+# TODO: de-duplicate $enable_url_rewrite_helpers list containing double entries.
#define list of modules to build
auto_urlrewrite_modules=no
debugs(42, 8, HERE << n << " bytes from " << preply.from);
-// FIXME INET6 : The IPv6 Header (ip6_hdr) is not available directly >:-(
+// XXX: The IPv6 Header (ip6_hdr) is not available directly
//
// TTL still has to come from the IP header somewhere.
// still need to strip and process it properly.
#define ip6_hops // HOPS!!! (can it be true??)
ip = (struct ip6_hdr *) pkt;
- FIXME += sizeof(ip6_hdr);
+ // += sizeof(ip6_hdr);
debugs(42, DBG_CRITICAL, HERE << "ip6_nxt=" << ip->ip6_nxt <<
", ip6_plen=" << ip->ip6_plen <<
preply.rtt = tvSubMsec(tv, now);
/*
- * FIXME INET6: Without access to the IPv6-Hops header we must rely on the total RTT
- * and could calculate the hops from that, but it produces some weird value mappings using ipHops
- * for now everything is 1 v6 hop away with variant RTT
+ * Without access to the IPv6-Hops header we must rely on the total RTT
+ * and could calculate the hops from that, but it produces some weird value mappings using ipHops
+ * for now everything is 1 v6 hop away with variant RTT
* WANT: preply.hops = ip->ip6_hops; // ipHops(ip->ip_hops);
*/
preply.hops = 1;
else if (payload && len == 0)
len = strlen(payload);
- /** \li
- \bug If length specified or auto-detected is greater than the possible payload squid will die with an assert.
- \todo This should perhapse be reduced to a truncated payload? or no payload. A WARNING is due anyway.
- */
+ // XXX: If length specified or auto-detected is greater than the possible payload squid will die with an assert.
+ // TODO: This should perhapse be reduced to a truncated payload? or no payload. A WARNING is due anyway.
assert(len <= PINGER_PAYLOAD_SZ);
pecho.to = to;
debugs(37, DBG_IMPORTANT, MYNAME << "send: " << xstrerr(xerrno));
/** \li If the send results in ECONNREFUSED or EPIPE errors from helper, will cleanly shutdown the module. */
- /** \todo This should try restarting the helper a few times?? before giving up? */
+ // TODO: try restarting the helper a few times before giving up?
if (xerrno == ECONNREFUSED || xerrno == EPIPE) {
Close();
return;
case NETDB_EX_NETWORK:
++o;
- /* FIXME INET6 : NetDB can still only send IPv4 */
+ // XXX: NetDB can still only send IPv4
memcpy(&line_addr, p + o, sizeof(struct in_addr));
addr = line_addr;
o += sizeof(struct in_addr);
if (! (addr = n->network) )
continue;
- /* FIXME INET6 : NetDB cannot yet handle IPv6 addresses. Ensure only IPv4 get sent. */
+ // XXX: NetDB cannot yet handle IPv6 addresses
if ( !addr.isIPv4() )
continue;
struct sockaddr_in *sin = NULL;
if ( family == AF_INET && !isIPv4()) {
- // FIXME INET6: caller using the wrong socket type!
+ // TODO INET6: caller using the wrong socket type!
debugs(14, DBG_CRITICAL, HERE << "Ip::Address::getSockAddr : Cannot convert non-IPv4 to IPv4. from " << *this);
assert(false);
}
bool GetHostByName(const char *s);
public:
- /* FIXME: When C => C++ conversion is done will be fully private.
+ /* XXX: When C => C++ conversion is done will be fully private.
* Legacy Transition Methods.
* These are here solely to simplify the transition
* when moving from converted code to unconverted
* mechanisms that allow non-blocking access to these mappings.
* The IP cache usually doesn't block on a request except for
* special cases where this is desired (see below).
- *
- \todo IP Cache should have its own API *.h header file.
*/
/**
\defgroup IPCacheInternal IP Cache Internals
\ingroup IPCacheAPI
- \todo when IP cache is provided as a class. These sub-groups will be obsolete
+ \note when IP cache is provided as a class. These sub-groups will be obsolete
* for now they are used to separate the public and private functions.
* with the private ones all being in IPCachInternal and public in IPCacheAPI
*
# This file is supposed to run all the tests required to identify which
# configured modules are able to be built in this environment
-# FIXME: de-duplicate $enable_log_daemon_helpers list containing double entries.
+# TODO: de-duplicate $enable_log_daemon_helpers list containing double entries.
#define list of modules to build
auto_logdaemon_modules=no
class MemPoolStats;
/// \ingroup MemPoolsAPI
-/// \todo Kill this typedef for C++
+/// TODO: Kill this typedef for C++
typedef struct _MemPoolGlobalStats MemPoolGlobalStats;
/// \ingroup MemPoolsAPI
* Suitable frequency for cleanup is in range of few tens of seconds to
* few minutes, depending of memory activity.
*
- \todo DOCS: Re-write this shorter!
+ * TODO: DOCS: Re-write this shorter!
*
\param maxage Release all totally idle chunks that
* have not been referenced for maxage seconds.
};
/// \ingroup MemPoolsAPI
-/// \todo Classify and add constructor/destructor to initialize properly.
+/// TODO: Classify and add constructor/destructor to initialize properly.
struct _MemPoolGlobalStats {
MemPoolMeter *TheMeter;
/**
\ingroup MemPoolsAPI
- \todo Stats API - not sured how to refactor yet
*
* Fills a MemPoolGlobalStats with statistical data about overall
* usage for all pools.
OfflineToggleAction(const CommandPointer &cmd);
};
-/// Registers profiles for the actions above; \todo move elsewhere?
+/// Registers profiles for the actions above; TODO: move elsewhere?
void RegisterBasics();
} // namespace Mgr
* period. The larger the number of requests between cycled resets the
* more balanced the operations.
*
- \param data unused.
- \todo Make the reset timing a selectable parameter in squid.conf
+ * \param data unused
+ *
+ * TODO: Make the reset timing a selectable parameter in squid.conf
*/
static void
peerClearRRLoop(void *data)
const SBuf range(buf_.substr(0,limit));
- //fixme: account for buf_.size()
+ // XXX: account for buf_.size()
bool neg = false;
const char *s = range.rawContent();
const char *end = range.rawContent() + range.length();
/**
\defgroup PConnAPI Persistent Connection API
\ingroup Component
- *
- \todo CLEANUP: Break multiple classes out of the generic pconn.h header
*/
class PconnPool;
void
redirectShutdown(void)
{
- /** FIXME: Temporary unified helpers Shutdown
+ /** TODO: Temporary unified helpers Shutdown
* When and if needed for more helpers a separated shutdown
* method will be added for each of them.
*/
if (check_time > entry->timestamp)
age = check_time - entry->timestamp;
- // FIXME: what to do when age < 0 or counter overflow?
+ // XXX: what to do when age < 0 or counter overflow?
assert(age >= 0);
/* We need a refresh rule. In order of preference:
# This file is supposed to run all the tests required to identify which
# configured modules are able to be built in this environment
-# FIXME: de-duplicate $enable_security_cert_generators list containing double entries.
+# TODO: de-duplicate $enable_security_cert_generators list containing double entries.
#define list of modules to build
auto_security_modules=no
# This file is supposed to run all the tests required to identify which
# configured modules are able to be built in this environment
-# FIXME: de-duplicate $enable_security_cert_validators list containing double entries.
+# TODO: de-duplicate $enable_security_cert_validators list containing double entries.
#define list of modules to build
auto_security_certv_modules=no
}
switch (Var->name[LEN_SQ_MESH + 2]) {
- case MESH_PTBL_INDEX: { // FIXME INET6: Should be visible?
+ case MESH_PTBL_INDEX: { // XXX: Should be visible?
Answer = snmp_var_new_integer(Var->name, Var->name_length,
(snint)p->index, SMI_INTEGER);
}
GENGRAPH(client_http.kbytes_in.kb, "client_http.kbytes_in", "Client HTTP kbytes_in/sec");
GENGRAPH(client_http.kbytes_out.kb, "client_http.kbytes_out", "Client HTTP kbytes_out/sec");
- /* XXX todo: http median service times */
+ // TODO: http median service times
GENGRAPH(server.all.requests, "server.all.requests", "Server requests/sec");
GENGRAPH(server.all.errors, "server.all.errors", "Server errors/sec");
GENGRAPH(icp.kbytes_sent.kb, "icp.kbytes_sent", "ICP kbytes_sent/sec");
GENGRAPH(icp.kbytes_recv.kb, "icp.kbytes_recv", "ICP kbytes_received/sec");
- /* XXX todo: icp median service times */
- /* XXX todo: dns median service times */
+ // TODO: icp median service times
+ // TODO: dns median service times
GENGRAPH(unlink.requests, "unlink.requests", "Cache File unlink requests/sec");
GENGRAPH(page_faults, "page_faults", "System Page Faults/sec");
debugs (19, 0, "mem_hdr::debugDump: Current available data is: " << result.str() << ".");
}
-/* FIXME: how do we deal with sparse results -
+/* XXX: how do we deal with sparse results -
* where we have (say)
* 0-500 and 1000-1500, but are asked for
* 0-2000
#define STORE_IN_MEM_BUCKETS (229)
-/** \todo Convert these string constants to enum string-arrays generated */
+// TODO: Convert these string constants to enum string-arrays generated
const char *memStatusStr[] = {
"NOT_IN_MEMORY",
/**
* Notify this disk that it is full.
- \todo XXX move into a protected api call between store files and their stores, rather than a top level api call
+ * XXX move into a protected api call between store files and their stores, rather than a top level api call
*/
virtual void diskFull();
/**
* Output stats to the provided store entry.
- \todo make these calls asynchronous
+ * TODO: make these calls asynchronous
*/
virtual void stat(StoreEntry &e) const = 0;
# This file is supposed to run all the tests required to identify which
# configured modules are able to be built in this environment
-# FIXME: de-duplicate $enable_storeid_rewrite_helpers list containing double entries.
+# TODO: de-duplicate $enable_storeid_rewrite_helpers list containing double entries.
#define list of modules to build
auto_storeid_modules=no
#include "globals.h"
#include "Store.h"
#include "StoreClient.h"
-/* FIXME: Abstract the use of this more */
+// TODO: Abstract the use of this more
#include "mem_node.h"
#include "MemObject.h"
#include "SquidConfig.h"
e->swap_filen << ", errflag=" << errflag);
if (errflag == DISK_NO_SPACE_LEFT) {
- /* FIXME: this should be handle by the link from store IO to
+ /* TODO: this should be handle by the link from store IO to
* Store, rather than being a top level API call.
*/
e->disk().diskFull();
CPPUNIT_ASSERT(test.counter(max)==1);
test=raw;
test.count(max);
- //CPPUNIT_ASSERT(test.val(capacity-1)==1); //FIXME: val() returns a density
+ //CPPUNIT_ASSERT(test.val(capacity-1)==1); // XXX: val() returns a density
}
void
++Config.cacheSwap.n_configured;
}
-/* TODO make this a cbdata class */
-
static bool cbcalled;
static void
free_cachedir(&Config.cacheSwap);
- /* todo: here we should test a dirty rebuild */
+ // TODO: here we should test a dirty rebuild
safe_free(Config.replPolicy->type);
delete Config.replPolicy;
* Please see the COPYING and CONTRIBUTORS files for details.
*/
-/* DEBUG: section 64 HTTP Range Header */
-
#include "squid.h"
#include "fatal.h"
#include "HttpHeader.h"
#include "HttpHeaderRange.h"
-/** \todo CLEANUP: This file should be called something_stub.cc */
+// TODO: refactor as cppunit test
void httpHeaderPutStr(HttpHeader * hdr, Http::HdrType type, const char *str)
{
Comm::SetSelect(sock, COMM_SELECT_READ, wccp2HandleUdp, NULL, 0);
- /* FIXME INET6 : drop conversion boundary */
+ // TODO: drop conversion boundary
Ip::Address from_tmp;
from_tmp.setIPv4();
if (ntohl(wccp2_i_see_you.type) != WCCP2_I_SEE_YOU)
return;
- /* FIXME INET6 : drop conversion boundary */
+ // XXX: drop conversion boundary
from_tmp.getSockAddr(from);
debugs(80, 3, "Incoming WCCPv2 I_SEE_YOU length " << ntohs(wccp2_i_see_you.length) << ".");
if (ntohl(router_list_ptr->num_caches)) {
/* send packet */
- /* FIXME INET6 : drop temp conversion */
+ // XXX: drop temp conversion
Ip::Address tmp_rtr(router);
if (wccp2_numrouters > 1) {
char *s, line[1024];
CacheDir cd;
while ( cfgin.getline( line, sizeof(line)) ) {
- // FIXME: overly long lines
+ // TODO: overly long lines
// terminate line at start of comment
if ( (s = (char*) memchr( line, '#', sizeof(line) )) ) *s = '\0';
}
// find double CRLF sequence (actually, look at the FSM below)
- // FIXME: this only looks at the already known buffer read previously,
+ // XXX: this only looks at the already known buffer read previously,
// which is globally passed (yuck)! As a limitation, the content data
// *must* begin within the buffer size (that is: 16k)!
if ( ! copyHdr ) {
// "meta" will be deleted when exiting from this block
} else {
- // weird file, FIXME: stat() it!
+ // weird file, TODO: stat() it!
struct stat st;
long size = ( fstat(fd,&st) == -1 ? -1 : st.st_size );
if ( ::verbose ) flag = ( log_extended( fn, -1, size, 0 ) >= 0 );