GCC Code Coverage Report


Directory: cvmfs/
File: cvmfs/network/network_errors.h
Date: 2025-07-27 02:42:09
Exec Total Coverage
Lines: 36 36 100.0%
Branches: 4 4 100.0%

Line Branch Exec Source
1 /**
2 * This file is part of the CernVM File System.
3 */
4
5 #ifndef CVMFS_NETWORK_NETWORK_ERRORS_H_
6 #define CVMFS_NETWORK_NETWORK_ERRORS_H_
7
8 namespace download {
9
10 /**
11 * Possible return values. Adjust ObjectFetcher error handling if new network
12 * error conditions are added.
13 */
14 enum Failures {
15 kFailOk = 0,
16 kFailLocalIO,
17 kFailBadUrl,
18 kFailProxyResolve,
19 kFailHostResolve,
20 // artificial failure code. Try other host even though
21 // failure seems to be at the proxy
22 kFailHostAfterProxy,
23 kFailProxyConnection,
24 kFailHostConnection,
25 kFailProxyHttp,
26 kFailHostHttp,
27 kFailBadData,
28 kFailTooBig,
29 kFailOther,
30 kFailUnsupportedProtocol,
31 kFailProxyTooSlow,
32 kFailHostTooSlow,
33 kFailProxyShortTransfer,
34 kFailHostShortTransfer,
35 kFailCanceled,
36
37 kFailNumEntries
38 }; // Failures
39
40
41 2224 inline bool IsHostTransferError(const Failures error) {
42
2/2
✓ Branch 0 taken 528 times.
✓ Branch 1 taken 1696 times.
2224 switch (error) {
43 528 case kFailHostConnection:
44 case kFailHostTooSlow:
45 case kFailHostShortTransfer:
46 528 return true;
47 1696 default:
48 1696 break;
49 }
50 1696 return false;
51 }
52
53 2240 inline bool IsProxyTransferError(const Failures error) {
54
2/2
✓ Branch 0 taken 32 times.
✓ Branch 1 taken 2208 times.
2240 switch (error) {
55 32 case kFailProxyConnection:
56 case kFailProxyTooSlow:
57 case kFailProxyShortTransfer:
58 32 return true;
59 2208 default:
60 2208 break;
61 }
62 2208 return false;
63 }
64
65 670 inline const char *Code2Ascii(const Failures error) {
66 const char *texts[kFailNumEntries + 1];
67 670 texts[0] = "OK";
68 670 texts[1] = "local I/O failure";
69 670 texts[2] = "malformed URL";
70 670 texts[3] = "failed to resolve proxy address";
71 670 texts[4] = "failed to resolve host address";
72 670 texts[5] = "all proxies failed, trying host fail-over";
73 670 texts[6] = "proxy connection problem";
74 670 texts[7] = "host connection problem";
75 670 texts[8] = "proxy returned HTTP error";
76 670 texts[9] = "host returned HTTP error";
77 670 texts[10] = "corrupted data received";
78 670 texts[11] = "resource too big to download";
79 670 texts[12] = "unknown network error";
80 670 texts[13] = "Unsupported URL in protocol";
81 670 texts[14] = "proxy serving data too slowly";
82 670 texts[15] = "host serving data too slowly";
83 670 texts[16] = "proxy data transfer cut short";
84 670 texts[17] = "host data transfer cut short";
85 670 texts[18] = "request canceled";
86 670 texts[19] = "no text";
87 670 return texts[error];
88 }
89
90 } // namespace download
91
92 #endif // CVMFS_NETWORK_NETWORK_ERRORS_H_
93