XRootD
Loading...
Searching...
No Matches
XrdClHttpUtil.cc File Reference
#include "XrdClHttpFile.hh"
#include "XrdClHttpOps.hh"
#include "XrdClHttpOptionsCache.hh"
#include "XrdClHttpUtil.hh"
#include "XrdClHttpWorker.hh"
#include <XProtocol/XProtocol.hh>
#include <XrdCl/XrdClDefaultEnv.hh>
#include <XrdCl/XrdClLog.hh>
#include <XrdCl/XrdClURL.hh>
#include <XrdCl/XrdClXRootDResponses.hh>
#include <XrdOuc/XrdOucCRC.hh>
#include <XrdOuc/XrdOucPrivateUtils.hh>
#include <XrdSys/XrdSysPageSize.hh>
#include <XrdVersion.hh>
#include <curl/curl.h>
#include <openssl/bio.h>
#include <openssl/evp.h>
#include <fcntl.h>
#include <fstream>
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>
#include <charconv>
#include <sstream>
#include <stdexcept>
#include <utility>
Include dependency graph for XrdClHttpUtil.cc:

Go to the source code of this file.

Classes

struct  WaitingForBroker

Functions

std::pair< uint16_t, uint32_t > CurlCodeConvert (CURLcode res)

Class Documentation

◆ WaitingForBroker

struct WaitingForBroker

Definition at line 81 of file XrdClHttpUtil.cc.

Collaboration diagram for WaitingForBroker:
Class Members
CURL * curl {nullptr}
time_t expiry {0}

Function Documentation

◆ CurlCodeConvert()

std::pair< uint16_t, uint32_t > CurlCodeConvert ( CURLcode res)

Definition at line 174 of file XrdClHttpUtil.cc.

174 {
175 switch (res) {
176 case CURLE_OK:
177 return std::make_pair(XrdCl::errNone, 0);
178 case CURLE_COULDNT_RESOLVE_PROXY:
179 case CURLE_COULDNT_RESOLVE_HOST:
180 return std::make_pair(XrdCl::errInvalidAddr, 0);
181 case CURLE_LOGIN_DENIED:
182 // Commented-out cases are for platforms (RHEL7) where the error
183 // codes are undefined.
184 //case CURLE_AUTH_ERROR:
185 //case CURLE_SSL_CLIENTCERT:
186 case CURLE_REMOTE_ACCESS_DENIED:
187 return std::make_pair(XrdCl::errLoginFailed, EACCES);
188 case CURLE_SSL_CONNECT_ERROR:
189 case CURLE_SSL_ENGINE_NOTFOUND:
190 case CURLE_SSL_ENGINE_SETFAILED:
191 case CURLE_SSL_CERTPROBLEM:
192 case CURLE_SSL_CIPHER:
193 case 51: // In old curl versions, this is CURLE_PEER_FAILED_VERIFICATION; that constant was changed to be 60 / CURLE_SSL_CACERT
194 case CURLE_SSL_SHUTDOWN_FAILED:
195 case CURLE_SSL_CRL_BADFILE:
196 case CURLE_SSL_ISSUER_ERROR:
197 case CURLE_SSL_CACERT: // value is 60; merged with CURLE_PEER_FAILED_VERIFICATION
198 //case CURLE_SSL_PINNEDPUBKEYNOTMATCH:
199 //case CURLE_SSL_INVALIDCERTSTATUS:
200 return std::make_pair(XrdCl::errTlsError, 0);
201 case CURLE_SEND_ERROR:
202 case CURLE_RECV_ERROR:
203 return std::make_pair(XrdCl::errSocketError, EIO);
204 case CURLE_COULDNT_CONNECT:
205 case CURLE_GOT_NOTHING:
206 return std::make_pair(XrdCl::errConnectionError, ECONNREFUSED);
207 case CURLE_OPERATION_TIMEDOUT:
208#ifdef HAVE_XPROTOCOL_TIMEREXPIRED
210#else
211 return std::make_pair(XrdCl::errOperationExpired, ESTALE);
212#endif
213 case CURLE_UNSUPPORTED_PROTOCOL:
214 case CURLE_NOT_BUILT_IN:
215 return std::make_pair(XrdCl::errNotSupported, ENOSYS);
216 case CURLE_FAILED_INIT:
217 return std::make_pair(XrdCl::errInternal, 0);
218 case CURLE_URL_MALFORMAT:
219 return std::make_pair(XrdCl::errInvalidArgs, res);
220 //case CURLE_WEIRD_SERVER_REPLY:
221 //case CURLE_HTTP2:
222 //case CURLE_HTTP2_STREAM:
223 return std::make_pair(XrdCl::errCorruptedHeader, res);
224 case CURLE_PARTIAL_FILE:
225 return std::make_pair(XrdCl::errDataError, res);
226 // These two errors indicate a failure in the callback. That
227 // should generate their own failures, meaning this should never
228 // get use.
229 case CURLE_READ_ERROR:
230 case CURLE_WRITE_ERROR:
231 return std::make_pair(XrdCl::errInternal, res);
232 case CURLE_RANGE_ERROR:
233 case CURLE_BAD_CONTENT_ENCODING:
234 return std::make_pair(XrdCl::errNotSupported, res);
235 case CURLE_TOO_MANY_REDIRECTS:
236 return std::make_pair(XrdCl::errRedirectLimit, res);
237 default:
238 return std::make_pair(XrdCl::errUnknown, res);
239 }
240}
@ kXR_TimerExpired
const uint16_t errUnknown
Unknown error.
const uint16_t errInvalidAddr
const uint16_t errRedirectLimit
const uint16_t errErrorResponse
const uint16_t errTlsError
const uint16_t errOperationExpired
const uint16_t errLoginFailed
const uint16_t errDataError
data is corrupted
const uint16_t errInternal
Internal error.
const uint16_t errInvalidArgs
const uint16_t errConnectionError
const uint16_t errNotSupported
const uint16_t errSocketError
const uint16_t errCorruptedHeader
const uint16_t errNone
No error.

References XrdCl::errConnectionError, XrdCl::errCorruptedHeader, XrdCl::errDataError, XrdCl::errErrorResponse, XrdCl::errInternal, XrdCl::errInvalidAddr, XrdCl::errInvalidArgs, XrdCl::errLoginFailed, XrdCl::errNone, XrdCl::errNotSupported, XrdCl::errOperationExpired, XrdCl::errRedirectLimit, XrdCl::errSocketError, XrdCl::errTlsError, XrdCl::errUnknown, and kXR_TimerExpired.

Referenced by XrdClHttp::CurlWorker::Run().

Here is the caller graph for this function: