/*
- * Copyright (C) 1996-2016 The Squid Software Foundation and contributors
+ * Copyright (C) 1996-2017 The Squid Software Foundation and contributors
*
* Squid software is distributed under GPLv2+ license and includes
* contributions from numerous individuals and organizations.
#include "base/CbcPointer.h"
#include "dns/forward.h"
#include "err_type.h"
+#include "forward.h"
#include "HierarchyLogEntry.h"
+#include "http/Message.h"
#include "http/RequestMethod.h"
-#include "HttpMsg.h"
#include "Notes.h"
#include "RequestFlags.h"
#include "URL.h"
class HttpHdrRange;
-class HttpRequest: public HttpMsg
+class HttpRequest: public Http::Message
{
MEMPROXY_CLASS(HttpRequest);
public:
typedef RefCount<HttpRequest> Pointer;
- HttpRequest();
- HttpRequest(const HttpRequestMethod& aMethod, AnyP::ProtocolType aProtocol, const char *aUrlpath);
+ HttpRequest(const MasterXactionPointer &);
+ HttpRequest(const HttpRequestMethod& aMethod, AnyP::ProtocolType aProtocol, const char *schemeImage, const char *aUrlpath, const MasterXactionPointer &);
~HttpRequest();
virtual void reset();
- void initHTTP(const HttpRequestMethod& aMethod, AnyP::ProtocolType aProtocol, const char *aUrlpath);
+ void initHTTP(const HttpRequestMethod& aMethod, AnyP::ProtocolType aProtocol, const char *schemeImage, const char *aUrlpath);
virtual HttpRequest *clone() const;
String myportname; // Internal tag name= value from port this requests arrived in.
- NotePairs::Pointer notes; ///< annotations added by the note directive and helpers
-
String tag; /* Internal tag for this request */
String extacl_user; /* User name returned by extacl lookup */
static void httpRequestPack(void *obj, Packable *p);
- static HttpRequest * CreateFromUrl(char * url, const HttpRequestMethod &method = Http::METHOD_GET);
+ static HttpRequest * FromUrl(char * url, const MasterXactionPointer &, const HttpRequestMethod &method = Http::METHOD_GET);
ConnStateData *pinnedConnection();
*/
CbcPointer<ConnStateData> clientConnectionManager;
- /// The Downloader object intiated the HTTP request if exist
+ /// The Downloader object which initiated the HTTP request if any
CbcPointer<Downloader> downloader;
+ /// the master transaction this request belongs to. Never nil.
+ MasterXactionPointer masterXaction;
+
/// forgets about the cached Range header (for a reason)
void ignoreRange(const char *reason);
int64_t getRangeOffsetLimit(); /* the result of this function gets cached in rangeOffsetLimit */
+ /// \returns existing non-empty transaction annotations,
+ /// creates and returns empty annotations otherwise
+ NotePairs::Pointer notes();
+ bool hasNotes() const { return bool(theNotes) && !theNotes->empty(); }
+
private:
mutable int64_t rangeOffsetLimit; /* caches the result of getRangeOffsetLimit */
+ /// annotations added by the note directive and helpers
+ /// and(or) by annotate_transaction/annotate_client ACLs.
+ NotePairs::Pointer theNotes;
protected:
virtual void packFirstLineInto(Packable * p, bool full_uri) const;
virtual void hdrCacheInit();
- virtual bool inheritProperties(const HttpMsg *aMsg);
+ virtual bool inheritProperties(const Http::Message *);
};
+class ConnStateData;
+/**
+ * Updates ConnStateData ids and HttpRequest notes from helpers received notes.
+ */
+void UpdateRequestNotes(ConnStateData *csd, HttpRequest &request, NotePairs const ¬es);
+
#endif /* SQUID_HTTPREQUEST_H */