143 static void extractChecksumFromList(
const std::string & checksumList, std::vector<std::string> & extractedChecksum);
170 virtual void reset();
179 int parseBody(
char *body,
long long len);
195 void addCgi(
const std::string & key,
const std::string & value);
445 void trim(std::string &str);
long filemodtime
Definition: XrdHttpReq.hh:299
virtual bool Data(XrdXrootd::Bridge::Context &info, const struct iovec *iovP, int iovN, int iovL, bool final)
bool readClosing
Definition: XrdHttpReq.hh:244
int depth
Definition: XrdHttpReq.hh:248
XResponseType xrdresp
The last response data we got.
Definition: XrdHttpReq.hh:285
std::string m_user_agent
Definition: XrdHttpReq.hh:78
void clientMarshallReadAheadList(int nitems)
Definition: XrdHttpReq.hh:216
std::string requestverb
Definition: XrdHttpReq.hh:225
Definition: XrdHttpReq.hh:212
long modtime
Definition: XrdHttpReq.hh:64
long fileflags
Definition: XrdHttpReq.hh:298
std::string buildPartialHdr(long long bytestart, long long byteend, long long filesize, char *token)
Build a partial header for a multipart response.
int ReqReadV(const XrdHttpIOList &cl)
Prepare the buffers for sending a readv request.
int parseFirstLine(char *line, int len)
Parse the first line of the header.
XrdHttpReq(XrdHttpProtocol *protinstance, const XrdHttpReadRangeHandler::Configuration &rcfg)
Definition: XrdHttpReq.hh:154
std::vector< XrdOucIOVec2 > XrdHttpIOList
Definition: XrdHttpUtils.hh:95
long long writtenbytes
In a long write, we track where we have arrived.
Definition: XrdHttpReq.hh:311
void addCgi(const std::string &key, const std::string &value)
bool sendcontinue
Definition: XrdHttpReq.hh:249
XrdHttpProtocol * prot
Definition: XrdHttpReq.hh:98
std::string destination
The destination field specified in the req.
Definition: XrdHttpReq.hh:254
Definition: XrdXrootdBridge.hh:225
XrdOucString resourceplusopaque
The resource specified by the request, including all the opaque data.
Definition: XrdHttpReq.hh:236
XrdOucString m_resource_with_digest
Definition: XrdHttpReq.hh:265
Definition: XrdHttpReq.hh:71
void parseResource(char *url)
bool m_status_trailer
Definition: XrdHttpReq.hh:91
int sendReadResponseSingleRange(const XrdHttpIOList &received)
static void determineXRootDChecksumFromUserDigest(const std::string &userDigest, std::vector< std::string > &xrootdChecksums)
void trim(std::string &str)
virtual bool Redir(XrdXrootd::Bridge::Context &info, int port, const char *hname)
Definition: XrdHttpReq.hh:219
ReqType
These are the HTTP/DAV requests that we support.
Definition: XrdHttpReq.hh:207
XrdHttpReadRangeHandler readRangeHandler
Tracking the next ranges of data to read during GET.
Definition: XrdHttpReq.hh:243
bool fopened
Definition: XrdHttpReq.hh:302
long long size
Definition: XrdHttpReq.hh:61
static void extractChecksumFromList(const std::string &checksumList, std::vector< std::string > &extractedChecksum)
int mScitag
Definition: XrdHttpReq.hh:313
std::vector< readahead_list > ralist
Definition: XrdHttpReq.hh:183
XrdOucEnv * opaque
The opaque data, after parsing.
Definition: XrdHttpReq.hh:234
XResponseType
Definition: XProtocol.hh:896
std::size_t hash(const BasicJsonType &j)
hash a JSON value
Definition: XrdOucJson.hh:5221
int parseLine(char *line, int len)
Parse the header.
int iovL
byte count
Definition: XrdHttpReq.hh:293
XrdHttpChecksumHandler::XrdHttpChecksumRawPtr m_req_cksum
The checksum that was ran for this request.
Definition: XrdHttpReq.hh:260
std::string etext
Definition: XrdHttpReq.hh:287
long filectime
Definition: XrdHttpReq.hh:300
virtual bool Error(XrdXrootd::Bridge::Context &info, int ecode, const char *etext)
Definition: XrdHttpReq.hh:220
bool headerok
Tells if we have finished reading the header.
Definition: XrdHttpReq.hh:240
bool m_trailer_headers
Definition: XrdHttpReq.hh:86
bool keepalive
Definition: XrdHttpReq.hh:246
char fhandle[4]
Definition: XrdHttpReq.hh:301
virtual int File(XrdXrootd::Bridge::Context &info, int dlen)
Definition: XrdHttpReq.hh:208
const std::string & userAgent() const
Definition: XrdHttpReq.hh:198
int httpStatusCode
Definition: XrdHttpReq.hh:74
Definition: XrdHttpReq.hh:59
void getReadResponse(XrdHttpIOList &received)
virtual bool Done(XrdXrootd::Bridge::Context &info)
the result context
Definition: XrdHttpReq.hh:218
long long m_current_chunk_size
Definition: XrdHttpReq.hh:83
std::string buildPartialHdrEnd(char *token)
Build the closing part for a multipart response.
std::string hdr2cgistr
Additional opaque info that may come from the hdr2cgi directive.
Definition: XrdHttpReq.hh:270
int PostProcessHTTPReq(bool final=false)
XErrorCode
Definition: XProtocol.hh:987
Definition: XrdOucEnv.hh:41
std::string host
The host field specified in the req.
Definition: XrdHttpReq.hh:252
std::string httpStatusText
Definition: XrdHttpReq.hh:75
int parseBody(char *body, long long len)
Parse the body of a request, assuming that it's XML and that it's entirely in memory.
std::string m_req_digest
The requested digest type.
Definition: XrdHttpReq.hh:257
unsigned int rwOpDone
To coordinate multipart responses across multiple calls.
Definition: XrdHttpReq.hh:279
bool m_transfer_encoding_chunked
Definition: XrdHttpReq.hh:81
std::string m_digest_header
The computed digest for the HTTP response header.
Definition: XrdHttpReq.hh:267
Definition: XrdHttpReadRangeHandler.hh:54
int PostProcessChecksum(std::string &digest_header)
void mapXrdErrorToHttpStatus()
Definition: XrdHttpProtocol.hh:79
long id
Definition: XrdHttpReq.hh:62
Definition: XrdXrootdBridge.hh:293
Definition: XrdHttpReq.hh:210
void clientUnMarshallReadAheadList(int nitems)
ClientRequest xrdreq
The last issued xrd request, often pending.
Definition: XrdHttpReq.hh:282
std::string stringresp
If we want to give a string as a response, we compose it here.
Definition: XrdHttpReq.hh:305
long long length
Definition: XrdHttpReq.hh:247
Definition: XrdHttpChecksum.hh:32
int iovN
array count
Definition: XrdHttpReq.hh:292
Definition: XrdHttpReq.hh:217
long long m_current_chunk_offset
Definition: XrdHttpReq.hh:82
int reqstate
State machine to talk to the bridge.
Definition: XrdHttpReq.hh:308
long long filesize
Definition: XrdHttpReq.hh:297
bool m_appended_hdr2cgistr
Definition: XrdHttpReq.hh:271
Definition: XrdHttpReq.hh:209
void appendOpaque(XrdOucString &s, XrdSecEntity *secent, char *hash, time_t tnow)
XErrorCode xrderrcode
Definition: XrdHttpReq.hh:286
Definition: XrdSecEntity.hh:64
Definition: XProtocol.hh:843
int sendReadResponsesMultiRanges(const XrdHttpIOList &received)
XrdOucString redirdest
Definition: XrdHttpReq.hh:288
ReqType request
The request we got.
Definition: XrdHttpReq.hh:224
void parseScitag(const std::string &val)
XrdOucString resource
The resource specified by the request, stripped of opaque data.
Definition: XrdHttpReq.hh:232
Definition: XrdHttpReq.hh:213
Definition: XrdHttpReq.hh:211
struct iovec * iovP
The latest data chunks got from the xrd layer. These are valid only inside the callbacks! ...
Definition: XrdHttpReq.hh:291
std::map< std::string, std::string > allheaders
Definition: XrdHttpReq.hh:229
Definition: XrdHttpReq.hh:215
void sanitizeResourcePfx()
Definition: XrdOucString.hh:254
unsigned int rwOpPartialDone
Definition: XrdHttpReq.hh:279
long flags
Definition: XrdHttpReq.hh:63
Definition: XrdHttpReq.hh:214
std::string path
Definition: XrdHttpReq.hh:60
Definition: XrdHttpReadRangeHandler.hh:36