mirror of
https://codeberg.org/kiss-community/repo
synced 2024-08-21 21:46:18 +00:00
parent
86a79dedbb
commit
4ca86088e3
|
@ -1 +1,499 @@
|
||||||
09c6e7c7ab6caf8d3efedfc312ff159cf372fe7978778aa266ddd8743e8038561e
|
09c6e7c7ab6caf8d3efedfc312ff159cf372fe7978778aa266ddd8743e8038561e
|
||||||
|
698d1d5bcb06ac48a25d2a333b64371f0a32bd8dd08f7b328e84b3442d84df8330
|
||||||
|
69ffa90dbc5e3aa317785ae07344a1f0c36a2b76fab110be0b143744941708b94e
|
||||||
|
dae3dd4d012a133b005b4f1efb604ffd5483bfb647ea13da0ae8ea668bb2aa4ee1
|
||||||
|
3d8f1e8abb7e20bfd874b1b9bd731db95d5cf7d5348a57fb3a607e852a70f8f6c9
|
||||||
|
ac1f313953ee34d3bf822140fe33793944a3f21b46b1e1a68868c0f1a38e2b6f71
|
||||||
|
0eb656e0ddbde773e8913b691ae6ab28cc1f13450c2face434b0c45c2fec290bc7
|
||||||
|
579d5f32d181b8ccca4165290330a4efb45af62cb7c56c9c0bb414a1b41851c3c2
|
||||||
|
5b29935f972c167b30d7eb05e36048c281282a007dafcb0234f57199f731b418df
|
||||||
|
69d1a7f763f1d7cbff080df831e6f22d3a563877afe14e3607d1a88e918e34fac5
|
||||||
|
7ea3a9c03cf3a0a1971fa3a406a24c3c1e65002fed7693520d4dc5465f8f29be68
|
||||||
|
d009dd238ffa8a5ca4f5b913d99072c03961eebe17dcb3921174d95c7bd54064b0
|
||||||
|
cababca31383bd4a37ae71659b82be4d6945f9c265d60bb7e5884fdbd4977b53eb
|
||||||
|
68b4826413f006202d04e792dfcc2e52451ff9225ea8d554a022ac2c301ca6438f
|
||||||
|
d2b6800e5954edbd50eea48895e881a417e8691b3e600689228f0c13b5028d348c
|
||||||
|
7e08abdb5176cd121072c63d5214c55f8334b92e57257bd312722ca2e8f2967e1a
|
||||||
|
29e4d1084cbbf282866de7c67fa0207b39da0ed39234e1445be772d1a3aacf9fab
|
||||||
|
689b6e46e6ff9a148946482ab724ddd60a6a74424fa8ca5678471c7111244d096b
|
||||||
|
3537d8cd7cfecaf2fcf5cd0972eaf8ede8c590b95da56e6b75479becc88ecb884d
|
||||||
|
2e59c2b7b209e1697d6edba89cdc3e91875ec54c34f71bb3cf6989c11875744886
|
||||||
|
e7fc447656e567082ac763fa4f1ef13927ddd584d2eb6160113d3abb3ac37bc75a
|
||||||
|
bdb5db611a0bc77f3576e4236150eed62bf90f0eb491cc5cf222bc6e1710d1bb4f
|
||||||
|
8928e51f3040d4a4d0a8f0eecea52f97313c67c5976f270da9219313cf2e97e651
|
||||||
|
3164de3d26f75c67c979006f93e6c9c4de2334e8bf9066ac258c3cf3d159291f77
|
||||||
|
08598aa9a4327be7c0474c70aef26e6eb0d785f7e99e0aebfc9bc2fc8879ea030f
|
||||||
|
6c05cc971aa14238b4903e67d215949b8fde2201f10caf59877a07001d48c5e791
|
||||||
|
916d94abf0bfa8d4beb066eeef309ca25baefce534d252d428bf247b33d7d62d22
|
||||||
|
ec1113b930e192619511d909b2bffcbe7016c6d8e232787c7daa941b75f68cbad7
|
||||||
|
49a1341bc03ca5b49636802bbd4e0a1fc8f2a7ecbaf70f3c0d92eedc63fb23f502
|
||||||
|
b0f16c004b52a1d89c4c24b32d99f8ff56797232acbefdbb4f39bb752396004a40
|
||||||
|
9ca051f13abbe138a48e0f336f28b68db8e1acdaf40e0837ef3cbab0e7d351f24d
|
||||||
|
ebb7f9671674458e41280852eff1707de966d7d55290d1abb7447959ede4608f48
|
||||||
|
f591769ceaf61c515acd41e5dce3611462c7fdca0224f85ab93d6fbcac56ff96a3
|
||||||
|
b1340ddd4aede44d4dc215ae1f5e807a0c306771a0bbce3ff4eac279c2709011d6
|
||||||
|
0c10e497bdcfcc80f2783b3167505635e3a9ece6acb73012dfc81812498564aa92
|
||||||
|
dbd18a62b886255252523cd2e6720411c150f2d5f5a3da2512a1ffabef55944d99
|
||||||
|
54202967341eb6c1c3f24e2c54097976bd9cc644d59094582b94344d590d54dc68
|
||||||
|
b55f0cdac36e7d5b57e088d7eef477ead301095eea97f6ac1e936aa918a71c68ab
|
||||||
|
19f5ccd49dfddb29eff089e74e2ced3f905d3818651917cbb07eb8ac6068d60abf
|
||||||
|
d05861b97b8e857e2ae5bd2713d3b801097eec960196141e7f8cac72fe3a2490a4
|
||||||
|
0f7b93ceb11f3ff7535ec63fae7b6d9f849a4ee3f76a264eb28646be8dd3eae27d
|
||||||
|
b352d88d0e4f1cd481445ab53030b7b3ce7e289b482e63c503151872aa8cff9eb0
|
||||||
|
1ba5ccbced9a5a2ffff81eaa5467c055e37bc944417e40a0ff2e434d021140162a
|
||||||
|
5edc1e4ed651e17dfb16c1cbbd1bd2ffd17fbb7a7b7d05ac8e226e975dd92aa4d5
|
||||||
|
e2a9f8a1a1fd82c86ffb793eff356ceb0e0cf4a1acbf3a7c9534e76fa20494745d
|
||||||
|
c5f8b3e768abd6e53c47aa96eb0a6e6ee084ab9516939ba7572bb1634225965ad0
|
||||||
|
f9a06baa6b44df4bcb8e03556a9729b324afbe9b7dfde658c17b0f2e3f45124019
|
||||||
|
85cea9ff118d2f907ab26bfa7d494f30e473869470b45fe98208132174229acbe6
|
||||||
|
ea8eb290fc4946e8de22c0012c42fa6e726a7503cd96047ef004876d488a0e6794
|
||||||
|
c3c1ca4f85a676735110529881c308cb6a70aefb977a720d5049d0f4ac5195c3f1
|
||||||
|
70bfb28c6963f731f95fd0b3ef0cbe993c2a908c40ad25f88ca1aa22350262bf94
|
||||||
|
db93211ba4a7435904ea2098f68ba50bf8af8199a39430c7088f1d46d2b338273a
|
||||||
|
febd3db535df4e522ca889a38886d8cd0763593874828752b9e1387ce6f929871e
|
||||||
|
4bd08aeef9b6cb93a3fbfbe2dd7c1ba74a8d2ce1350c11282ae37fd4922c46a3d1
|
||||||
|
d066ff859d0285f46611dca540eb5a104c73e3d399735d5bff0bb7fd9ab05dfa3a
|
||||||
|
4addcd8567ff49eb62ef573c9c1fb0c8ee265462eddf62957ca7a86c82bbc0a470
|
||||||
|
c3d9e84f346419b03845216766a9436a920e18e9ef8bb8149d2ffc3e0aaf417f35
|
||||||
|
8963ec9ed888606be30b7574be659ee1e48896ccfd800d812a356518cc94aba723
|
||||||
|
5f2e6a9cd310687441197636538b1b70ec8c366b3d0fbdecbb1775056bf6fb2b63
|
||||||
|
1d450da910860e64c50d375bb60c5fde53e6f7a69404bc81b5d4d7e44ce12421f8
|
||||||
|
179b8943a30bd98d336abc658f3b88c7832b4c64d7517a5a8de3c1e4517ed9538e
|
||||||
|
beb74fa12039f68fccc1152699c1f33288a06c241598c62b197eb2b5f5ec330d3b
|
||||||
|
9fc30dc8693ea839927c933c4344b86188a22c3a2e407906033469455f9ac59b5b
|
||||||
|
665ce68feb46245078936ff6a5b7782c1d71c57610f6ede88d4b176f831ac8a86f
|
||||||
|
990c72ff4dda6891ce0b37d1f7bf973503f9b80dadffa322ce2a5fedcc1584899f
|
||||||
|
fc0a41fca00d3b368deb0e51ba69a2bad1da07d45e5a2c19704947c6a0e8724b3d
|
||||||
|
4ca5ac818d2ace2de45b1c036a427223f6383025039a3306c973e85646e971d4ff
|
||||||
|
9ec45ccc1e592184e152ab768abf14fc406951f9131d647369417828efe8fa7cf9
|
||||||
|
21cbc8d362ed2a04370f1156966b48e8ddf9907c633d2bf0244e74bf1fb88fc330
|
||||||
|
3ffc9a69140b0a1646be4d80ed6a45c3552c6a41a50533c5dcf0d48304eef9b390
|
||||||
|
8ada02b7e85c869ca0b3a9da7742f95f4946ae6fc475f0fac8380926d6d2346faa
|
||||||
|
5f8ebf8fc1696d3748fdc43c810215c1d2929dfbfd51859049054c2054a5d71304
|
||||||
|
77c71b5b747b5e72fb48f9b6c1eede0b341474d789c30befc18b0b81daf751ac05
|
||||||
|
c39a7ff124625cf1a2659a4869e21141c7bbde897c4cdd95dd891acb1a06886c5e
|
||||||
|
05238a3338570cf9ccfb06eb3209790ed9fdae406fdc773bf9c4bc70bc36770701
|
||||||
|
f9114173f7d7b6bf24563861ec9bcf6abb5fef97724d73b23930e86cdc445b3250
|
||||||
|
30dd55312b9516dfe9400747ba8512a0a0a69badd07d58f81fadcfcfe4ab46d2fa
|
||||||
|
d45d7f8316e016ac4f0eb931ebc746e0acb3a09a89995e60a94ed0caa2749ab225
|
||||||
|
db7ae2a8df2bbd610d4392ca1dfe9db688d684abb269e7a57b2cb798ac11c5818b
|
||||||
|
a52efc5a2f00ab82ab42cd2dcc223789ec959c5439fd6a5a20e25c64fe3b5a4a08
|
||||||
|
fbf23274ca8e8d98b40357b8699d044ce26b6ad28f1e590947b6c969862facfdd8
|
||||||
|
f663a8081cc20bfbd70e2eedee61265f9ca480197b349efd6e8bd1ce7319f4e5aa
|
||||||
|
35d0f439b2ecabb91b1817ceb575bb657265e5ed3b4ea0a68b337337c484e25ae4
|
||||||
|
01f8e917bd12c59f844dfe55d731470960cacdd5a543352fd8389971875a4099c8
|
||||||
|
1ead79263e24f0333022859cd9b758b9626d252de29b9520588ee18897f37dac3c
|
||||||
|
edd93093f457d706987c2a2c4b840b5806dc948a46ca45680e56d3fde9f0f387d4
|
||||||
|
0c1b2bcf3b14bf2fa2b374e7fa809bb7955549b96118d3bd4078e00ee1030d00bf
|
||||||
|
8112d405d4a9a8110567fd5cdfd1e6588a299c990f7fbd5733eaf4d8c4d5d13192
|
||||||
|
8a170c89b146325a438e9eb76bc5a44ab768249543607009d558bf84400481db6b
|
||||||
|
9a3b82ba33aa8420ac2d8cdfdb7b69dff384a59af18c5b1ee99ec34c5ff1a5a1a8
|
||||||
|
a8f88a9fe78820eac1775b4b29064f35d25a4d07584b3ab588cc8ca397d37b926b
|
||||||
|
e5ef19dd6f68af022dd59781747cadd9ff92bf3147603b50317c88037abc248f35
|
||||||
|
2262d5726ec5a2ee9f1afedfa5929bb6109d3989a566d31c5410add76e393e7744
|
||||||
|
eac5216a153caf971007287979f46b79a1b81872b1ee9218fecf1df41d5bea223e
|
||||||
|
32f9d166f8ccfe23c4a46cc1337a97887e4b88faad5f74a41daf36c7d4331f3366
|
||||||
|
95397b110e9c3e2531cdb1c04787b5104cfd4a7d739f363a5dde3243d299409515
|
||||||
|
6af0a280d5c11816a7f4ac138e959b0831136a1da66f74725ba91411bf9bb03058
|
||||||
|
953a752b39abe38b90e16583db42a139539f8b3ebc2429c5dc3aadbc4337ae9a20
|
||||||
|
948cf892733a3f331fbdb83f3ec6b28b306bf1a052f5d0d932cebe6eeeae78b1a6
|
||||||
|
7ccc8a228bd971d41061ec8c2b1ec0d2f7f7e1d6021750366058e7e6b041e2b57b
|
||||||
|
f4f9605c644adfbe975a8a8bc2330f639640460116788fdd35f3694f1e230af040
|
||||||
|
d2bc4a630480fcf7258e0e5642c12fb05d1efbd69b11fbd92d84f436205ada64b0
|
||||||
|
bf1da90ca5cfc4266ab6f739e0165025fa323cae5d298e75ee94caa268892f8b66
|
||||||
|
da726bff9fb420bd44e7da63857cee459a4e600bce2eaea085ea8bd86e42521e0d
|
||||||
|
05588a6fce7cd88c46dad6dd4117166605dde8c72253b58123b6e9ff99f383bb3a
|
||||||
|
6ff52d4fe69443fed4c6fb28be9691a765aa535816519dd306e87c319b8f68f102
|
||||||
|
a233d9ccf43e22736e00b6037fabb2c8fe1f96d7fe5ed63aedaacb9c10cafa5817
|
||||||
|
aa930003e224af9a24a8cd123467a1ea7e49f705acd2f73a7c01d5fcf664c580b8
|
||||||
|
8023decaeecd3b5f6ac27aad53b368728562dfc764c61a626968d3c15047baccca
|
||||||
|
d1468d6ec344448cb6a2fd2aa97ed1b2a06982489c578484a7dbba7e44214741ea
|
||||||
|
8203d065f94432fcea819519b35ea1765d27aa2f55fdb97b6e60524be1663b2ccc
|
||||||
|
1a9b3337ce2a1e19d197d3d09927628312230efccd6efa771b273567054c2c9c5e
|
||||||
|
993650369373fb0f6b9f30185b60cb30939bc5946a2a1de1d73440c54a409d3fa0
|
||||||
|
f51a3b7d5ad651d3fd4481dc6f3c984e0014eee9a659cdf58b1376fc8fb415bdee
|
||||||
|
40703917fc438cf399a60df1e2e40603ba04ed2f573c267df8f08daf1bfe4417c6
|
||||||
|
0976bba87f762b9feea6f42d5cd9fdc7cf5135e3d03962dbf3bc6be75da8116a14
|
||||||
|
ab4708630a94f8aaecc50ed403695aca8355a24088b048e80cc048e00a08a6f7d6
|
||||||
|
97ae0c975d569717e818d83a999d68e8a5acb56249f21f391c2e638408f7dac3c5
|
||||||
|
e3f0aac0f868f4a4c0757e27897c3ee44452807f0e28c444014486aaac479df50a
|
||||||
|
4254b05077aa39175a09d3a7b668abb93b9951081fa25befe2d5462739590870fd
|
||||||
|
61146d1a6b4d6daa6443ae4adc9ba3e8de5cee3a2eea7ba6e6a2f331e392311676
|
||||||
|
a354e6abf8550bb35fafdd5ed782dccd2c5ef7c1a170fed5028b7aa7c00ac73c98
|
||||||
|
ecc8954a141394edf12a23e8a2dc70da89217ddeb7267a78c3b74d385aacfad652
|
||||||
|
539a6fb1891da6c44ec4c07d4d5c7d0cd2cb54acdb7aa88c7a9d9e437d60304fa2
|
||||||
|
67217cfc25cd40672723529f44e4666223a57f6c39ff6034b3a546533ca23afe5c
|
||||||
|
392241a32dd59c10aa0fbc2873cc6badae7ad8aa7b19678b1e6f850c6f788d46c3
|
||||||
|
1f70cbe9791db1ce0bdc53b3e5b9017a7210e3c61238ef39c9e9f3670c9b2efed0
|
||||||
|
efc752f91ecc2aee5a42fbe2b8fdc2168241fc173b4db6f1e109dc1cc403947905
|
||||||
|
0b2ba97c904cc827d668dea80ceac43c73c4b2e22c4184d040405abc9a60eed11d
|
||||||
|
9b4f34c1f8cdbfd87ecf06cf3bf7e97fe95d57250f0835fad0ce1a62287e4fd5d0
|
||||||
|
a5b3201119a69705e6de71ee273bb13c3e156d9017780fda77e4c4657f0e976fb1
|
||||||
|
e121107746db5f4eec83db277d136d7796e8242b161081911ec08b4d8f9d3cf724
|
||||||
|
1be301e9f11c06ed09a395b67f2a279d6e118f015dfa43959b955d2c36256fa033
|
||||||
|
6d6ea38610d0602ac44ee64a883606e840d56e21656360b34e8fc1ba7f22b4758c
|
||||||
|
85b013e9610b5c5320970839756686f2113f8c221202872843cad046b73924ccac
|
||||||
|
b84a7a9d356b3bf1bfe3a170f89f29a2f041230eb14f5452fad0850f321f8b11bf
|
||||||
|
0935c7c7fb07ef3cbb75ccae7ad14d27e304405063b9b9348b47ad96da56713ff1
|
||||||
|
f72a7f20bd368e5ea1535efc360078ee98f2e31534a3307c331a3c124ae09b5b0d
|
||||||
|
1273d5843df49ee570dfe6e213ff0caa834326ea28c18311a3716b1bcfb2a7e073
|
||||||
|
30fbb56463d75a70073b78f19db9973cda759722b6677f4cd332baf14871c1995c
|
||||||
|
42494554cf1b354878cf24546352637fbe3bc73b35d5a2d15e5cdc9a3cb59579af
|
||||||
|
99022369a34bafa4bb2df975033b214c4efc19d935201ddafd7126f29ee54c3162
|
||||||
|
161d37d6e05d90a51a42a4fbe104e8df154cbcb91a599dbf2f02370b6c20037870
|
||||||
|
921cb29230f9d19a7faed23742670e7ad76b66759d09cdc085d38a2e7424f4094f
|
||||||
|
6c0378035215dd581dfdae05bc87fe96bf57874f61dbf8ed4c4242f9922577d8f9
|
||||||
|
865178fe1492dd10f8fbe5c245bfd50fb92644a417053ef4f753c45c5a7104b31e
|
||||||
|
15ecad30768b1f42f08732789a4c06b31a1122a9bdc594eec2b44aba741daa7012
|
||||||
|
30a8b512d47ad639f2ec2d06cb363b83460344f1220e8e4801161b539ea71e4c5a
|
||||||
|
ffcb963f06fc7be73af04fa32ce867e96d446e52da421d902e393c4e7414377b9c
|
||||||
|
e95319ceb3d58615e008c9f600acabc5c27ada93015db9b8a73314748451f87327
|
||||||
|
b2d517000e55cf6ef637d4971d26b76442ccb3bf91cc35f72ead8c38a3dad91dfb
|
||||||
|
0b0666ef33bc0676acfc5db21e260635802c85361641e621d230094c614b6fabe9
|
||||||
|
42166c64edd0895e3570df454f64ee44a9cf88f45c9c3afd1e789619ac7e74d807
|
||||||
|
beb451a2cae57ab5c3f610a59e5b7160dc31c6b124c7aa5ee8d020be14b1637035
|
||||||
|
70948d8b0b38f110f3d1b0e909ea653d7962ee17dec3fe38275b55ff782627f468
|
||||||
|
713f4093b454c097ed169af45522faf9255f0b064b14cc6ef5205d8840add96add
|
||||||
|
99c30f07a300b810f0d2329c7b49612ee8b4cb44e71f8e5d19c39045a9e9ac17f3
|
||||||
|
ce1dfe7c27cc9d5f93b8224285bfde667f577a94de8ce94a214810876a24d3a209
|
||||||
|
51662ca96dad1990c0a6cd66297c7438fee6c49cd380c0eab8343ddf423b821e88
|
||||||
|
dc7fe2a4be344d17c339d2523eaabae6a5c897ccc07462a211767a4938f6a06e4d
|
||||||
|
605cfc366d875d067ca29f05e7ae4182804e6a5248acacd4eb63f484e4cc058531
|
||||||
|
1f29ade58f0e161d37b9d4b830d2ea36e648877479d6bfcf135f528ea7f3f604af
|
||||||
|
600ef765e37fb19fdc68c209c9a54a7754da4929085986e99f5b22304c1fa72e75
|
||||||
|
c434045f7332d3bfd5f81ab246e9f04eead5c637a5f39198016195bb8c6f756d5f
|
||||||
|
de01b2b78df7a61979df1f580af2ab16dbd36766a95afbe430207ed51355dbec33
|
||||||
|
3fa5646461c34c32effb024bd0eb90b4fb634510e3dc94956324d8ca583cb6a340
|
||||||
|
8969fc6a746e7d8b848ab0cec20862748a7b0d8516a8faf7c9fa63f34feff1506c
|
||||||
|
2b3ff14a8412031b68ee8a87f4de079a9042051c574b5397c61d1f88b3e378b197
|
||||||
|
2334e229d88d32bed0869b082db8f53f076b5f6c08775577433aa152c08ffd439a
|
||||||
|
2b18745f2daddfc91870afea1a9f44a04bd1b88bbdaaa24e6aea84ef803fa2b2b6
|
||||||
|
fecd93ea83883aba30356c417f7ac5e92e8f9a7b46328ad513ea0acd93eec231ac
|
||||||
|
5a776d4f88031a60108b04f2971dce709d847ae320beb043f9123cd504e4e0d5a1
|
||||||
|
246cc956b479c322025474fa65771218a3424bfdf4a6b295d16d2b6e735d30546a
|
||||||
|
ff3fd29d1acfab8c1a3b3ca23c84c04af4779a6381b80573d22407cbfe25a115f2
|
||||||
|
37b46b1de89148c85bae63a2eeb518e1dbc7e604b95530eafa6dab534a8be7c293
|
||||||
|
77d0a6e59204f32bb3e665541d7d69fc818b02baad9e446f085fbfa7208320037c
|
||||||
|
515eaa783da467f9a179ea032210ec794f4b6a824ffdcec78049f2a94ed7c6eac5
|
||||||
|
981f1a1111feb2050c4b032268252622731db37a9f2128399f844a9c3fab7c51a0
|
||||||
|
9a1363b4f3a96ed1b3cab38f1e1cd029bd1d1a9f64658293c38bef7b84cf25c799
|
||||||
|
3f8deadbd4f162797f2ca4e0b6954a2c8dc6fd6c17f70ec4c2936fabe66e3cca39
|
||||||
|
957e98019a040a236f41197858542222648e0de77919e6d0f8b4052a352c57cfbd
|
||||||
|
9eab81eb7f0f5189381e077fb966f5be31b15d24444bc4022a267694f7603e841d
|
||||||
|
0afef587b9ebe1d21c347b7236fe3f26148bfe26db4fde47077fcdcd5ec09ef730
|
||||||
|
fe4d4d97ba95e840c403e89ad382797222463aa21add73b893d39fa2efe80664ea
|
||||||
|
f49cb349652992fc9fc06c0dfe4440eae6811bdc653b43357960d0b9b9acff65ca
|
||||||
|
789593c82aec14ab6fb129291c08ad327bf9c9c319427017dca8f93cfd73c3f625
|
||||||
|
af81505ed53bfb39628181b809b378bcea416a2242fc10b821d4fe6df9e8a405bf
|
||||||
|
d01d652ac65d8b4d6dc953e30efcd440a96826d376395827eaae9397d8adcf02a8
|
||||||
|
3369365eb00286bc7573307ee8825ac9a95f1f2f481d2aa2c8a0e224b22a6d5c0d
|
||||||
|
ef75b1d4fea866ae71b28494ad2d7155a750b7b14563fb0ec91c9c547fc428f88c
|
||||||
|
d7242a7e5f5d56e268f20116136ad8f5ff0a2e86154564bfd2b23c7077757371d7
|
||||||
|
21e18467e09b1e32ed7c49aa5f7183110d2fa1411c6da2a1546a4cc746678a1e5a
|
||||||
|
ab9e864361050aa9be0076187f0a5dce994333b26cfa3ffbd23c6b450b598001eb
|
||||||
|
0123029e61dada4d60b15631b74b9b38de517813ac99b8be6f1336d969ee4b5c37
|
||||||
|
fcb2c1b974b9180480563d22621fd02ca9a91f812f434dcecbd6c9995488d96d3e
|
||||||
|
284b02226d8a7eb06faddef32669cdc023d5f7275fb2d9b281ecaa49e6bf594190
|
||||||
|
61525a7daefdc8aaf07b90c500713ff1dba47366a335d9b6a92e7b71643f9c918a
|
||||||
|
1f5dee5bd3dfb2bbc3a1bbb7067d466026e12178def76b9e3327fce1dccb00e9e0
|
||||||
|
e7bff9e5408cc25af7b664df8125f824f0462c1064a00808f96362c167411693c4
|
||||||
|
1ac832f21a4281b6bec66bf53d4d9f04262e24ffb63bd3ce5adcd6ffc9a081ffa4
|
||||||
|
d1f13311c02c6478586b3b8e9d22cdea7637089d055d91b7795c5a0bab04114d2f
|
||||||
|
380052f0052c71983df96dc8449c28bcd3035cad0934338e6d5ecc9e8257a2e122
|
||||||
|
5f30c3ac284b3612b750b21e3a0aef3aae56f77076ac19a6a7d9c0c47d3f6eb398
|
||||||
|
d32ce0ddd9242fdd26cbda5057e6334d3dfb983472a08a7cbd37dd4d9fc7222483
|
||||||
|
ebad454914feee6b3e3ae3dbb817d35768d61174c95c69babb23381b1cd9b000c9
|
||||||
|
26638985d925c16b25d6022bfb64be644070fa87eb9c665891cf26d73a1f527a99
|
||||||
|
fa879f1f7d6fda1a11d0a9ede952e634e466e03d14c889e0978e64a0488c169d4e
|
||||||
|
677ada851a8c27153b54cc3e0363f3b5a5abe7cd366bc7ef53f7eacf13a2f08e8f
|
||||||
|
8bfae607665c3449d93ebb35ec1d48fcd130e85ab16cf4bc98c7adcc41aa6dbcac
|
||||||
|
6e947bf220be727eb0f147ed70616dde00e1fec83437dbc78ce73237eed24ef7c9
|
||||||
|
f2910202b96628f910d8eafcaca11fa1a32d866e06cbf621ae73ee332f7f2927cb
|
||||||
|
d40aec16b5d8a0d9791573b01ef4e54e7ea780621136cbf28b1a4ba0232bc01656
|
||||||
|
bafff34c66f6d1c2a31f752138982d021fd33982ee0a8ec60f867958676f21ad44
|
||||||
|
d71634667250d1967755c0b8ebacc2b04fd29ec9eaafaa9b5d83356f92c8c3147d
|
||||||
|
a9e7aa34c73c9dcc352412e3d3e51e16d9f268cea57f4a378a1bbd5dea782ecd78
|
||||||
|
1f232153506de4279f291978d66cf272989dca91b368743ccbe3cc1ae31d09227d
|
||||||
|
25f884cf172b859be62a4ed7bace44901898730284e3b8332a4391e5ee158605a3
|
||||||
|
7f44678836c9796b1f0db697fbd45720829b11d0dde9f4135da180b523f0d825d3
|
||||||
|
b955697c49dfb7d060af2ef87845f6f5fb79d9573b78cd3a515b3045a838e96e58
|
||||||
|
bc51e4fc101a73c90843f413f6ed8b6a8aa82ab75e60ac80432e5d30c0a5807105
|
||||||
|
33d0bdac556424edc1e7d74cae2c519b7e6b94fc7dd3643333f42a87510baedc3d
|
||||||
|
19557ec0955978ae51d71b18f8ed16c749185bc13344568ea8ba779593fa54f59d
|
||||||
|
660fb3bb50ad293783e1d0756092b3c2a76fbf6a5707922e1bc5b04a4be8b988f0
|
||||||
|
6225e4e8df75560209a01e24e8e239dd6a6dfe808224ee40a2d8ae630a8dfd383b
|
||||||
|
e5772f8b5a1034d0baec4610603545f2ae5b6b10c70a84ed1f8a8399afbae41aff
|
||||||
|
23ce40fb24e92a0922b5404dd142e7e15c474b4b5ca0f4e3c605413516c54a1c4c
|
||||||
|
44bf42e611429de9f1551e273ac279bcb5bf44291576b560b980f5a9c8327aac5c
|
||||||
|
ad47854f55aecdba5f42b1a33650fe58b9ab18c94830061f58e4175dd81aa8a1ab
|
||||||
|
1411228a6b88673484fe922ddf68f67b75469a7b87324923167a24b8aaf836d3fb
|
||||||
|
ef7917419967394d36ddf3cf53ee67daa37ec691b5f512d2ee04144758fc3bbe4f
|
||||||
|
123d6a8efbc731ff7fa2cfba99d897336454f4c101b0b1a0addf5faa545c0dd217
|
||||||
|
ad4e0c3ad9df65772efcf7b1f67e26b727ec6b87271226ef8169c9de910f9718f6
|
||||||
|
0c211937dd65e3204796314029e25c01f7359af388c2b37ab8198e4a0e40cc9243
|
||||||
|
87dfb6c9961ac74d6499274da32e74da834a615c4e1654a3fabebf4c3d35947af6
|
||||||
|
1a64dc01c4e4df0bdcc503a4e4e1c224a50066a8c46212fb8d606a814aabf2232c
|
||||||
|
865c985eef9c7b3d122f9cfe4e6b4b21033daef6345ebc3e7f3e6dd016e2866681
|
||||||
|
1f04530c437a7add6591d9f18a2d304d840cec2ab0c620d9f4d0ac6ce13ca84fea
|
||||||
|
95749feeb3ca78d5f8346517e27b02d4c56edbe4ba65a9587278b759f1ccccae61
|
||||||
|
37b613eb01549c2bde08d472c1dd1086fc6bdae6a9ea3a06012a5f2bd4b6a3426f
|
||||||
|
705c8f96eb8018787738a8337c7e25e7a2ec0c871b7dd0b37c6be8fa7e6001e196
|
||||||
|
b1ef04e56e9be8bcf6f3865ed75e0caf0e7c35df59d930a3b318638e95c60e91ee
|
||||||
|
e3e1d1a1d3e354a5765decb86a45e93c77635e1f4a71a8da81d22860cd157b44fe
|
||||||
|
a8e00f665b6fa7fb2aa1ba979b2fd4d468448db783a4fed37a43a7c20c76090ae5
|
||||||
|
b97496b60cf9c586dc17a93f080dd4fe23d477c3e175fedfa9938f09eb8924fe34
|
||||||
|
a2e74c3be3df7b76e7b83f646c7c57ba0551c579eb0797187d280fc3ea1048dcc5
|
||||||
|
4ccec1dd27750ae4f40d404eb6f1bdf275e44548bba07209e55a0e7f82d9c86fac
|
||||||
|
9040b7ca4bd762022453c717570e324eef86658210da163b28f5886ff133005338
|
||||||
|
bcd80b013930987f380d5a3ca17fd61afdc73ea8e2598957a5f94d1fe827bb5b27
|
||||||
|
15f29b6a002ff83adef96c9a4e3fac3e4fb7ba3a281e2bb391060ab6c409071849
|
||||||
|
80810d67e0789ebcd34747ded4afe0ce5a3e6d8570dba240af76a81871a0253a6a
|
||||||
|
40ec6d2a2f55fa44c4ee9f11ef170a343eee1190e8dd19de321ceff6054826ea9b
|
||||||
|
23e14f9360dace3aa381912190526a0e3744952549d80df6c4aae8cfe1e276fde7
|
||||||
|
9ee73064590b00a21a0d834ee657e2cd05e7a3bfea01a5c9535cd9c074b6e9ad17
|
||||||
|
e012448592802b683b2b8a6c9671c28963f36edba8f93ef44808303665143f30dc
|
||||||
|
d036edd01ac32eeae7ca117672f9156600fec67d3945a6e1797e197fb25a8d96b3
|
||||||
|
2dd3cbce3f35127c652e930c8c7f0d8033de78014804f5125a1cbb32c93ad4a5f8
|
||||||
|
e2e00dabb2a09970b728aa5633cf95b1cdf595d6b1b81d4fbef1261c31bb87e7f1
|
||||||
|
bb195120e2beee98a7bff8314481a0b0cc6ed306413635c58e918f975dd60c2dce
|
||||||
|
9efec797dc00f609cb5002a9513b51f69c7fbd0f8456322eca60607fcfaed20349
|
||||||
|
2c9b3cf40fd25476d20a46d1b6a51bf8a12a210854363782f925760b29ea9b67f2
|
||||||
|
0cd514faf9418cb72297103ea38f1bb22c1977e73f2306225f03e07f472733494f
|
||||||
|
84d01694dc82a842eee63d7ce24519da4727866f3ae29de834316afdef0e16a223
|
||||||
|
781ff385c147d33c0284663f815033a43fbd29632c50887a67055f2ef3de64686d
|
||||||
|
d45036f352d13a652cfc9531a454f0fa43d9992ebfcb9b326e54071d639d3ec700
|
||||||
|
e6869ca026c969925f3076476f1db9b8d546dbf002f1dd2f50186169e555682275
|
||||||
|
4b01b84af40f1e1ac26efd94f9ef1248561c506f406ec4aad3b26d15274cb1a5c5
|
||||||
|
0e9584857b9e63ff26b95145df0d4c1431541748c5d45e01db5b47b257c4951bf9
|
||||||
|
ccdb5449ab262ed1372b44fa97d1c8679f4b410f9fe933094450eec292aeff19bc
|
||||||
|
0e04f1992f111ee2e8e528b74cc5bfd353717b4a2fe493dd089af95233c41739f9
|
||||||
|
96eb1fa2a40e9cf7cf670ae9fac19a8ec190a63d5349748d328a90cba3fd8722c4
|
||||||
|
f0f8510f2eaa4ddbc0450431901cb70055fb6b34573aae281ff308a3e4445aa52d
|
||||||
|
b053292bbd8a841dc9ae9d86bbfadcae6cee541e7a6d3fde707d5384926802c81e
|
||||||
|
eb7bde4d86db65401bbc3a5f0febddefbb3fed7f27cb0e298bb5eb344b44aeb20d
|
||||||
|
3ef13efbfd00aa6081d4a329e8d9113db677cabd9ec3c960d68007287bfa5aaad2
|
||||||
|
9061b0d9242b55361a15d280e2404b89234dba4b864b965d583c12deb6a22ef308
|
||||||
|
0ae8f510d20fb7a4d3b02bc077ca095309f178c9889c34aa9107147145bfd0c67d
|
||||||
|
920f4e22b6965d453e82ace94f89de48078274dccfc26ce4eaa43c8e968f1394fa
|
||||||
|
e496a53d01b7b51e9e77320cb11067d4ead6eb326189949e76b5c7deaf19123e0b
|
||||||
|
914259059aadca1ab3ceb8200ba7b96129b86f29bf97acecf5edbe00887a28a74a
|
||||||
|
d31fcce48922d9f9e86e685769f88d3be15010f0cb8b67ad5c4a63d28a4d9af482
|
||||||
|
cb6817839744f0ae8d8cd98110dc821b5313ed6c9a03ae8c948ca57ba3870f226b
|
||||||
|
ee6a442c46384efce461d717c9610b6f6261a2ceee6def7a28e440b75778aed842
|
||||||
|
01b5ac45f633bedd6e82fc89ba80affb3e0e7afc5ddab5b67fa410bd96c88a129b
|
||||||
|
92eb696553c2baca907a78201e80f0df37df96a5cc5f033c61936a39af3bf273de
|
||||||
|
eb5cdc4e11a42d24b3dddd653cb47932b970458d8ad305278fb1409bb6230deb96
|
||||||
|
5163deca5067826dbc535cb28161bdef5a9c0d121a9506f47502c0768d0e3fee21
|
||||||
|
5ddc33ccbb8d14dbd6365fbc2fc72f0048ab80f583a9b11fea8b7159f8f809643f
|
||||||
|
ff334a5058234f2bf1a9b502b61d6acdb9d45a0757b46aa53b7f10813fc6fceb40
|
||||||
|
544c4fd09bf19b87fbff13b92ea55afd4e9db5a97deed5788eb20f7bb4bebf4b53
|
||||||
|
7c40d13dd3da70311a5de604e8f5cf0beefc299cc89eac18876c5da2f5b677cbdc
|
||||||
|
bdff0102d1c17a07b2c845dcfb59cebd9447bc3adee90d74b838e8be490cd809b2
|
||||||
|
f591d123a2e4870952fe6a44f8e89d82ffd82e6979005e6e6e6638a43af793a47e
|
||||||
|
6bd30856d7c030fc1d7ec4baa7d6a56acf877d43b3109920fcc5d110c6a7cc2cc6
|
||||||
|
2cd3188219e3e9de561561a655847ce6a1162576081fc1321d36fe8e91230249d8
|
||||||
|
43c5998f0905b7211b05987015417fb6bc95f91e6a3c9d38e0674fa30890e9d55c
|
||||||
|
d4f17be6489d1a0195baddac608266ac7df165993e168253604bdc58ea3914638a
|
||||||
|
d2555dab5336b36cfdcc50968add2c1e5011adf98301624965f762ba70a7fc0d88
|
||||||
|
24569f32891ba2af5b1b705c53c651cfe5190f785423bfb8cb0bf40fd5bca35f73
|
||||||
|
aa599a88265074559442d1a709b239bc67646801823b7a83702628b3be6060dc60
|
||||||
|
534695dc004936b06376888f1d84f5070dfec7edb8fa980ee73948d75b5018bae0
|
||||||
|
dbbe22bb68ba4dd083c9ce6db006b84c1ed3570e71076a3726649eb0ade038c1ad
|
||||||
|
f4474b79d7fd748bcc3df0bf6f5912a8ca422cc59065535b9e14b0e02c587d4224
|
||||||
|
8d2bca7e360d1c1f23042e3e08a52b7d42c89b1bb7a06aadd0236a47edfc767bcf
|
||||||
|
b61d6aaf1c25212dcd2d467675b37d89423df072076786276b8f06ad7b4054b79b
|
||||||
|
c327c18af7d36220f4083d0f1e71b2f8ba4202cdea1785c2428f318c6eea56270c
|
||||||
|
ccda96a193f7bb64a210a605097ee46a9dff1e7524e5728e223dca1f0c0d22fc9c
|
||||||
|
3d3d62260ed30738dac22b345325dc5e1519bbb075d525b9f5c674d20f68be4376
|
||||||
|
41a1a64dda0bcd5fc7aca23d89d95c604eb7ac27b10d862254cd1cc09dc6e506e2
|
||||||
|
54101b9eae87b1a59ac921c5cd9d09338a8877cf627b2375c513a7f49ff51ac85d
|
||||||
|
a6d20226497f25a8ec664ad55001f13ef98c0d3bd796149f8357cbd8d1cd0f643d
|
||||||
|
427b5a65931412056c85c1ab0e1853460e0a082172695fea56040d7d2210364bb3
|
||||||
|
45f0dd17de158c959d8f9cb159686386fdad1a5f768f8cb68bd1564764cd97f523
|
||||||
|
26069228c1094595e77fab7da21851c5c93314ff37d84fc7bb15e1ed9b0736bb33
|
||||||
|
3b66b84a24b04686144ad2eab142c685018781707bf41d4bbe45bc39c983f50874
|
||||||
|
9fcfafc984d1de296c51bddf4e2fe6627d476a6785b8c213160ac3ccf6a75a0b26
|
||||||
|
9c5745f891329d4f19fc463c265921e7e1655c5ac9392469470732ca256b4a72aa
|
||||||
|
365c88bed15006d4cb0aadfe6e21b0333cecc7d2d6535739eebbe54988bf2fd301
|
||||||
|
5452e9d4349350ebc2f34a969852745212c143f2316de13e9d158ae7f108b64c0b
|
||||||
|
52fb506d6539dea244af9efc769f87779fb205e2094077ff71f99146f09b17423a
|
||||||
|
9622d8c44dcc1eec3e43022e7948a85560bcf40f450a4ea27be88fdcb3f2ea7ff6
|
||||||
|
29b9016d2386aa3ac7be51ff4c10bd40f5b5dd7b2d71f1c2f5f1528efd701aa591
|
||||||
|
06584b3ab94cc813a06409f47a4fc30dd782b42b65da2e1b8c0eef6bc7cb2e0703
|
||||||
|
8ddafa996570347352f3fc6c4062306036e3d870549f0365f6f9096080a8507d6f
|
||||||
|
239880acb024cbe97405f22cb52940f56571c707c24fb890c4602ac13b098830a2
|
||||||
|
06f74030525e22d73519e20f88499ea8a20c9a40a0e5b0cc172f53a4aaa6d991cb
|
||||||
|
aecda4e68c2a4d9533f7f0101cf40d8cea0eaeb3b23725028aaf12c629faa66bbd
|
||||||
|
b233fa3a9e1073cc15155b1079c4434bc8793d815b03a97ac91119119c7758cf1e
|
||||||
|
e731a52c187fd050f1309b233d281f9ee90a41a9f5ef6344a1b6718b99d687a6ed
|
||||||
|
43c4dee83e858af075ca16d7cefc0e31dfe042a775c101c834a5f6c294c77aab88
|
||||||
|
eec797902bbdfec4f7e6ac120b4532eb6b7fd3f58e9af02b397195b17e41bbbe8c
|
||||||
|
a87ae2fd47a589a55fff2ae3707fe8aaa1585e670bfaff09c14061e55600292a17
|
||||||
|
98bc195385ecd8982d81e8196bcbeddc67521ba0ab9ae2aef1c23639eca130c16e
|
||||||
|
a18620285f1db4d5d2128c17dfccd7640eb354ed386d03e6d8e02e1f5d4b1956a3
|
||||||
|
7a9a9cf250e053fa4fe564f23df40ee3d78f85eaab0ae6972d003e4f045663d04d
|
||||||
|
9a54abd98ea2ec84dd6f9de823bc1592eb0cc272ccff9853f7bb238e730091fa24
|
||||||
|
8208957c2c4632c6a48239725cc74be07f0f8efe1722647c2646f3f9ce367b0907
|
||||||
|
2f8bd0b0385559e7a49c10282fafab1bb4f570dd75ac7b43e4758eb67c7bddb241
|
||||||
|
92558736e4b4e750b466995c43ec7da807b31223ff9ba4035ca15ac7a3df225e8c
|
||||||
|
f030b93a93cf9c2d5599a1fc82807505e7793ae32d43f01074ff0f83829ab913c2
|
||||||
|
ce3ffc0725e697520bb9a933707ac71bca7b262f2f907ce9c0671222bf830b52bb
|
||||||
|
d0757c234dd5bbe9c1fec3a5ed6d78cb8f05cfa85820cf7b95ec882eac2bd06baa
|
||||||
|
20e2146fd2508f5eb369ffa0b5e17b108fcaf7639b42dd2f291eeedf9e8ef1fc67
|
||||||
|
d77d7b8a4c952ed1e68405f1f6515c2aa781bcbee5f42467cce472a7583e162af2
|
||||||
|
9bb4f6fe8e2cf2cb9672a65e8d35935e9c666783a48e30381983eceb74a246e859
|
||||||
|
c3894a34244e9fac718e2d6f37dda500f73c0996b5ae16e93a437725f90c08d6fc
|
||||||
|
7c7b7b2841654eb5113c0252ceef18116ccebd5357c8cb5c162dd8577914d4aa35
|
||||||
|
07b6329f27b14a137d809ff41f73c76bf421a9254785bafdfd8864225be50c22b1
|
||||||
|
6c1eb54912f9303727f23deda1927e261773417c58ad201684e67db9b699c0d6dc
|
||||||
|
43053d22a8c68340eb5b11be123fe6e8db6e2bf1c2a94499e13c522684dc9d00c1
|
||||||
|
6789f1479b07dbe074bc64351886bf907c3194792d9e80e9d64bd4c7b4d63308eb
|
||||||
|
c6c001a586727ff14f8a225799a82913f6f1ee8d243158cc0704cbc51ee6ecbd39
|
||||||
|
944a6c7ed68cc0600cac67234c6d6f1ff111c55702d0385fa0c80c1d4b723511cd
|
||||||
|
ab9e03ed207adcafaf6d4d5b9a9ff87fccb3f9590174e34dafdabd09720aea09cd
|
||||||
|
a19ca1c87d9a33bd6fa081d3b14fc8dc9f88c470b3d300281b8e5ce6f643232f2e
|
||||||
|
1528df530a68008fb45b31c080487eeab77d0b4d79f96e0ea0ed7f0045eb0e66d6
|
||||||
|
7b799517dcd3fdcb46d447f5a905f11e56167de9a70010d84f8cb81d15fc987d6a
|
||||||
|
32d524686bf839c9a836f694d6a0957c006705f93a05f947be80515e25a30e6168
|
||||||
|
24f094b54312292f0ac09417064ab05f71be60d06ad13a1be27af7f8b28c6a8849
|
||||||
|
bd1b06d8fcabfc8f9b5003086ad8939592143781e36689fe7f56f9dd3d0b4eef7d
|
||||||
|
94baaef0f0e4b5783b55bcbb0af676350485fae159f8d54166b09e4618f6983df5
|
||||||
|
079d0ce32a4642466e7e131e6e6fd2e68e583c27ff014fa0f1cafb29b298e06818
|
||||||
|
3c472c71f3079c21fef9450dbbee368e0df876c323ba29be8b5c9a4ceeb832707d
|
||||||
|
6fee3d637d5a45929cc6485a92af8c2b180487c56d7d5f65d566ef765d4c2d802e
|
||||||
|
3ff7a97d897aea37fa412bd86bd526b93c52a4fde28dc42841932c7b24d79a7ac7
|
||||||
|
9c282dac3b7c3c64c2bce1c73e6baf65d66ed45f841ff00d80960c3d5a6513b692
|
||||||
|
c5b67283bb98c0351117e368271d0070936c2bdfc9f5f47fffa4fb0c9ba483a37a
|
||||||
|
dc2bba8d22ed3b9c00e661e3e12ef20e01764520d0d916f0ff7370279b8e0e6dca
|
||||||
|
52abc752a16b1e8af04b4156e986c72d8c4e0ad684343bac72e87eee79999fa549
|
||||||
|
23ed4ad3daab19baf900faf41ceddd68f0f408eb06adab29c755325dd46ca00d4b
|
||||||
|
10c275e736f3c8624d44eb06070aeceebfad5484e02dfe7fa642219f4df422fc82
|
||||||
|
dbee4c3ad3c8a429bf2f3d8bfe9c20c362f0a86f035750cab489ce6ff9cfe8ee9d
|
||||||
|
4ddf983210236c149e1ad32272b1d81135d664db855abc4d9532a1c761a543d2b4
|
||||||
|
b0cd68faf050d7b2a4f38409df80dd3b01b6a8a691410815ede69e0bdb0f30e11c
|
||||||
|
d61c0de435b1b1a4cefb78d9e9e47894f5b792f92016738167c719e901eb5a6396
|
||||||
|
cf6d588473776662f84a7f0edcfd3c9f97f91f58494c55444d651361e10ada2fce
|
||||||
|
e34ead17a9b5468fb47851e0dbaba7ad0f078eee75084b7cd4af35073751b7a914
|
||||||
|
1f94c41fbecb7dcdc347be5cea4aa487d5d6a7c8e6725cbd615844d416319bc003
|
||||||
|
906bcab874743e24b18d40aad9b18ea629e3beb253c5e9ea80cdac8974a92422b9
|
||||||
|
7430ee82fab2b0c212f4d767e45cc5f1ad29f6ecf43dc0ca98f86dd8377a802d44
|
||||||
|
db50e470288180fc24b81996e8ab71047066131fdf361874b032351e45809097f9
|
||||||
|
b9c02ed3fd1c7de9d9645f277c77b0673d178411fa8cc2a59ba222416cd79aa3c6
|
||||||
|
325436efb94471f83f3b3e696a71a33f59b0795d5ef5edba69bdecafcb69a25cea
|
||||||
|
ed1faf4c676d45b15b91f9d03057058a85be0b40c43b59ac1ce069cbb969be78d0
|
||||||
|
5667535187595236103edcbc049d9c95adc2868c25d72fe6625f7bbd0f6b284a0e
|
||||||
|
3e54e84e4fc13ca3533b43539f211029f38d5dc4c22c0692efae539637e2be7280
|
||||||
|
2ad4fb986f7bdb4aab5192081e5ea55cc2e7e3c491baa237c6a2c82298bdc7ca16
|
||||||
|
785aa8124cfdd900a16180530c46e8b538fbac92518e5c93d9b7610d84fd1a3c2d
|
||||||
|
e49413760e95c6ff607aaa5af9000ec589d964a7a2ea8dab585dda3586ef9e0c98
|
||||||
|
41aba401a04b751853ce5ba55e47b3004056f65bd363fe9437a316bb585a4be985
|
||||||
|
41a7ff6428e44c13db0a4d6f7fd0a1a0f86ec36f1a753ce97d630730e9ceac2400
|
||||||
|
653716c5710f7b7fc9fb118a6664857abba92cd868b6fc3a43bc06832939bb77d2
|
||||||
|
6fdb590a37fda80f1b615a5491c3d8270727f7871f33bffd3567074bb6894905d8
|
||||||
|
a43c6f92d287b37a1b770bad3bc8c8caf3a7a312f89df2e75a12317dcaa11cd789
|
||||||
|
cc79675513accdd7ecca35fc2c814ab61dde36f7c4d3c4895d893f51f0af1cefd6
|
||||||
|
e3c897cdefb55b545832bb60caed61f3df500a67616038f5963a557c16b513483f
|
||||||
|
240a4abdd818ab637ef84b61a115c1895d06a9c9de604d52a264e3a6189b42ecb2
|
||||||
|
b0a31834530e9ad155a98e49ca607d62a65fda186bd849621f2b0c6985f1b88cd3
|
||||||
|
df53d8bf2be1548b2ac0f5a82178416928be8499cf84e6fdd2cd0f57a2b96d5b08
|
||||||
|
0909d82a5c5f57931b253ef0faece6dac6cb15664c09883c9d157cb251db3aa663
|
||||||
|
fb98f94a24b4c9b5c1ffb26b60f8d66573c8201c6701218681c9dcea1ccbe1adc6
|
||||||
|
83de5c31f56a79543dd7da635cfb8ca368ff666364fa0e8e152f4dde297363893e
|
||||||
|
7efdc4467698834c0674302d720c0e5e6f14f255f5489a4b339eec72f1d444952b
|
||||||
|
9da2ef43669290609ef4897056479d0a6ffcb1cfb7d59e07a891d50605e46bd012
|
||||||
|
9b5229a58454125bd7469c1090ea8cfd16f448ac141051615d96168145593272fc
|
||||||
|
70cf2944d9a6f70f175f703e990804ef34c1458340f1c26ce6b0470397351c862d
|
||||||
|
8a056fc7a1dec6e46b84d012c280e53121d97e2248471445fd4514ec5819388cf0
|
||||||
|
418bbe750fa654bc0fef21034dc60ef38d1675dba6075fb8472ac71fb6aec4e585
|
||||||
|
fc938bca2c532d8674238aebd524155bb61631d8a2618d147cae32ba3e14cb2d0f
|
||||||
|
e30d896c7fd40418ce9c478461a06531856ddea5d22726b3c9b11484ce597f5a77
|
||||||
|
dfa6f513b47e3aeb24f2183d2b9d0ded002cea49efed937e6fc606fb751a793dd4
|
||||||
|
acf081d3e33f6e42fc6b44e665cddaf61f40596a8d230a068e7c68ec4ea9604016
|
||||||
|
aba3bfd1e958f5b4987852701e69031673b94cb67e1fa14081e812c91c6d7f056b
|
||||||
|
c680c5a92d9fcc9439da51e726bca389f06d66be2ecd4ecc7c323567416a0f0643
|
||||||
|
9b3fb7cf2c98c9e2bfa47c48586600c28ac85627059940d6ecf126176c4ceea81f
|
||||||
|
4470a4d074015046264c7ac0f46d1b2ed4ed01a9d385ce015a9effbdf03a9b1cfd
|
||||||
|
06400c37ef290eae03d1ca7ecb1c961eef39a08c333e4ac9d26a9bf594a1f85212
|
||||||
|
c2298cccfceb6121c6e0ac5eb6eaebcac8e23f3975b699536b2952016c0cc91b44
|
||||||
|
62da5c99057e1ef59a16352a7101f4459d947e2ffe00679b8bd9e3c676a1f6bcfb
|
||||||
|
f9eed0c87ef0e1ee682046b5bc86219889077d0937b565e0d759af30e368d8e325
|
||||||
|
ecaf5908fca04d81b60483b6970866f6f9966d87fb04d8e2edc7be0459f8c625fb
|
||||||
|
84cf99818ba65885929f4df8f725280072d858e930e3932fcbdfc3747f43bc7267
|
||||||
|
dba311f1ba8d4dab2b46a566e9aef33d0cb65744b8f7a15f2c950f67c63539c9c5
|
||||||
|
7658727170046be0049c8de525628190851ac2da6f296ff42b52d0a1ef0004b698
|
||||||
|
2f5e9a70771fdb0b4cce6a1dba75f36a2fcaf4d2af2868e5147a552f14654ee86c
|
||||||
|
7ba97ea2a16c0391ed2aacb92dcf19f2687e77ad3175b502bd11e35f085124fddc
|
||||||
|
536dea51c4523a48ed983e470d12adf06101684765c4677f9a4298b2df0c6adf76
|
||||||
|
c9f14c3883b8c9549530050825063d48948ca1171d5f3d0e3e39564d9817f09b0d
|
||||||
|
92e47104610b047d746199f37fc3b91f360850f77e8dc2c78247bc5d37ef5b89f1
|
||||||
|
81c83095b5a84704bbb6058b475646005eb6e9574670520c8de24e4189c61f3d3b
|
||||||
|
10d4c30cf044cdad3af0f230d4d7cabfc5c3897d7cdb47c888d7af26d13384ec90
|
||||||
|
22c788085e973e8b9ee25f91317e6e52e9f0e2a19bcd08513cd2a15983ba9f1aa0
|
||||||
|
f62463b725649af21d1dbbafd9181e636fbfb97407663af88c0a54da4b09b05a2d
|
||||||
|
e33b31b2c1273d8bbb08c6374ab9b1593e7959fd6eb29d4eef7eac3bc495ae40f9
|
||||||
|
b7539d96b3105dd529eee24f286fda89bdd755f7c05ad5fb6c24692a641433d131
|
||||||
|
cf05c267c1241ae619947c2b60c2fc37e8f719c179a91d8abf8758245125ab99e9
|
||||||
|
99adc422327765737ab5a20512c6f3d96ea798f6c13f310c79113509fb61dd850a
|
||||||
|
580b1797dd263c521bb37dbab2cdd9c5dca4ef65069f66d808cfba98678b6a1408
|
||||||
|
5a2ca0761836daff51b7211d2678f3bc1d077724f7093cd05ea412567825d8d957
|
||||||
|
4341c07a23623953741f954423e73fdc2f9b30d0424e6dd923856816872c88e5e7
|
||||||
|
d3301bbd40a6911fa0a4dff9214bf8cc6fd3c4d824abe5e92297d5f1f3b0a07709
|
||||||
|
c3f839e1ab47eb5e580198dab33949fbaa14478372474fcc564467aaea22d93491
|
||||||
|
5970f6faad2acc287af4ee61adac971c079e65b824ca7bf1d0fa47410892987200
|
||||||
|
b125199ef40603239c5fd6a9e588811500dc98cc89ac49483a549d6f4f8e759e07
|
||||||
|
88ec89376c922570d7d42aa97fbc27358e7b106a5d3c7b0fe2538f43565e9a9643
|
||||||
|
848ef31ff3c23a9e5fc676ad7679c4e470fd5f8c909dbfcb962f0d2d788d52ae1c
|
||||||
|
1712dfcf572cd18fd4791e1cbf35a2d4b6594fa5da561ad0c8955c5f487a7b0cfc
|
||||||
|
1c1975dce2a37ebcea3d11ce38ab1e9e31e9e6a638b74ba9f41d2d69fb9c40fa5b
|
||||||
|
bfbfba04c3fb523f387a89f475d5b62aff30a970662dc8f0af920cad1c85206ac1
|
||||||
|
50cb812aabf1b0bb6a321943dadbb76aad7558afa817d9b888404374f7f6ecf46d
|
||||||
|
5f6677f33e8b4e05b874571ed8b791bfc0f350e924f76337314289455f3eafb32d
|
||||||
|
8cd05cf51ff46d8b8b77312e2f973f78f2843f138936403bebdd382c71212b4778
|
||||||
|
0708785997a1c6548c0ec11060d81b402a589c19e5f6b99b48e613094f6b4c7149
|
||||||
|
f0edd5f22a1bf21004c01fa76351c4a95656974bc756787117f7a94ad58c29b824
|
||||||
|
c9ea3eb15626ed7acbb036e84198873bc4e8ed0d31eedbae6dd16cfada407fde56
|
||||||
|
79c60d56e63a8629a1a6be495b238064661e79e7f32f667926da0d6643364204d0
|
||||||
|
e23a32e075706162ea043c12e2c7b9aa3181e7d2d663b89704c425d88752554515
|
||||||
|
5c20288a489572e7ff491e809a184d0d7b82189a6bb553abdae286d94400f95dd3
|
||||||
|
11448e12ee259961a918db7568cce8686684da43c9ac7623bd1891b2a70183d508
|
||||||
|
470ad4400b8a97f9f3ed0de6e5354dd2fb61c4cf578a1b37e0d97907b2be8c775d
|
||||||
|
1d8734fcf20ac15ccdd609be876063ee969a7a1a8c648f911fd848e25e9ac8c157
|
||||||
|
dd569872bd4cd51bfd2c125ff6af92131097c896de36b0301b9b865e5cc2498f36
|
||||||
|
a74c7efef0edc783ca95b8efdea181bcf16bbe6b26c5aaa24e1bfbca4fa9a24f93
|
||||||
|
1545e3b3426f6a69f9c01e55e7325d232f5a24ac73176a4d790953b2e64380b7b5
|
||||||
|
c187af439400a771833fc7306433690242c1beb84e0284ed9abeeb725e88bb0ad1
|
||||||
|
51d5d3768eb6dfa401d29ecfe353e42210adfac4d453fbeb1cb08b78344289e23e
|
||||||
|
b24b750afd97d602653f0828e96ddfd5ffe8ab11040bf409d2d5372e8646b0762a
|
||||||
|
47a348a9e7e082f0754e7ef0502022136702f9985b6b7f7420d3b5929f4f417338
|
||||||
|
f50cd88f7e97d49abc232dac9571806bdf65cfbc04f35f404de7c61d0f97d0e952
|
||||||
|
f401b44b65c1d2185a2ecca7b2dea6b1d507520efc10563702310c87da3612b824
|
||||||
|
bed583da4d64a1e132df7e6bd607f3fd67178f5e256a8f43d02f91ab08002aa8f5
|
||||||
|
baa62de1da33ad0430196d40caa3c0d3197270940f213d0618bf759f579c6eaf16
|
||||||
|
1ef027537bc2a3a8ec0b1868c77baf37c6e8a4fba0a1ed4650c87bd9dba375bf10
|
||||||
|
c5d79616751e3ccf1f7e3de6e97bb5d29b722155013bf53b0a8ae85dc31105d3bd
|
||||||
|
7c4cef9516d7e1a372b3dba4e61d84f51df48a12a50865f33e6735f5273171c841
|
||||||
|
9da4d408e8c49773d1a93cde4d7b2da96a1188ff7668b96113ea7c3084770b5be7
|
||||||
|
218f6b7e633233eb26d1c91d858a39e8aae1a9604da309e05546cc11efcb0392f8
|
||||||
|
732ba094e54dab527959890fadb7a3552f663dde67aa9dfa20421b416e54c80e15
|
||||||
|
a89f342e8f302838b87c461e3762fd7f816768b91c91752f64a2d11fbc189df9d2
|
||||||
|
869e8bb8c08e49bd7a5d4a9132b633983cbd8bfefa281fe62806bb502a6bd19dd9
|
||||||
|
e18d98ddb8d929e0e1287d75d1ac0ba30e2c17ea77e3c26dc47271246ddfddd503
|
||||||
|
61e658cd683c75c90a49bc6bbf9ef14995055005c590ee9b26e45032719e9f232c
|
||||||
|
46e4a077309cae70c5378f6d8df684dfb6a4ff13c3dec73f8b571b0320d337f816
|
||||||
|
f61fbebc17d748cb989f9904378f2680465a05ed388d42a476a587eef15eecb23e
|
||||||
|
e1fa9f5b6ed1f24445ca74a8c5ec4ece14366534365915da2e2b5d88a2ee95f6fc
|
||||||
|
50e526c51ac315d49ac3c2996c3fe8f018c5326db5380f165ee8d052179078cecd
|
||||||
|
a0f84df5d2cdd3449a98b6dd877ed22c5da5654b2f46c08b1928d4b1a10e8ff1e4
|
||||||
|
299a2a58bfc45d42d4a501ab6f88ad87ebb182f49b9d7cba8cb75741575e6e7866
|
||||||
|
101f9ce35cca5d7ff25897977697c3fc779d17d982d3f6f03998cb6babf6bbc83a
|
||||||
|
edad8bb91592132b916aa80579789f77b717830c81d2b5a58c48641b8073b1ebc1
|
||||||
|
175e95c7082216ebd60ed0cd42b26f8aba0bd2fb857f7990951073de953fe7187d
|
||||||
|
c8424f49d1f2e43a8b4a6e1e7caa7030d99f1e2074803b5f169910441f1ec77ea5
|
||||||
|
15ff68122c2230daba8eb1cdd2a3967a2ca3137e2cb2ebdc9580d8b41350ffa1ff
|
||||||
|
429b008e86e2e495e2e8e57ae4e1d07362a3de8b659c539c26112a2d9d554b6ceb
|
||||||
|
62008b94729e14bd3d847959ad7b9a23a101bd1c92eb4d5bda9d7302a1d363f2ed
|
||||||
|
09f540b689552ae73c24e733273710ddb0cd346fb338c791e6987e50026875f210
|
||||||
|
8946c8b5daaabe169496c43902b24526a433c41fe4cfce7f60423b891ea62c61f2
|
||||||
|
aec097f6a292700662968c0c42b4f77cac924ac0b8fa8d126afebc7826afe99735
|
||||||
|
1a1944bcf5654739527b340aff0c1c00f9c5fb99ee164c058cab890edf2afa7d16
|
||||||
|
fbbc8fb37ca116f886db54bfe2c0320dbf4d02f40f922695261a97202c47efa0b1
|
||||||
|
|
58
core/curl/files/CURLINFO_ACTIVESOCKET.3
Normal file
58
core/curl/files/CURLINFO_ACTIVESOCKET.3
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_ACTIVESOCKET.md
|
||||||
|
.TH CURLINFO_ACTIVESOCKET 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_ACTIVESOCKET \- get the active socket
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_ACTIVESOCKET,
|
||||||
|
curl_socket_t *socket);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a curl_socket_t to receive the most recently active socket
|
||||||
|
used for the transfer connection by this curl session. If the socket is no
|
||||||
|
longer valid, \fICURL_SOCKET_BAD\fP is returned. When you are finished working
|
||||||
|
with the socket, you must call \fIcurl_easy_cleanup(3)\fP as usual on the easy
|
||||||
|
handle and let libcurl close the socket and cleanup other resources associated
|
||||||
|
with the handle. This option returns the active socket only after the transfer
|
||||||
|
is complete, and is typically used in combination with
|
||||||
|
\fICURLOPT_CONNECT_ONLY(3)\fP, which skips the transfer phase.
|
||||||
|
|
||||||
|
\fICURLINFO_ACTIVESOCKET(3)\fP was added as a replacement for
|
||||||
|
\fICURLINFO_LASTSOCKET(3)\fP since that one is not working on all platforms.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_socket_t sockfd;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Do not do the transfer - only connect to host */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
/* Extract the socket from the curl handle */
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_ACTIVESOCKET, &sockfd);
|
||||||
|
|
||||||
|
if(res != CURLE_OK) {
|
||||||
|
printf("Error: %s\\n", curl_easy_strerror(res));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.45.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_LASTSOCKET (3),
|
||||||
|
.BR CURLOPT_CONNECT_ONLY (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
52
core/curl/files/CURLINFO_APPCONNECT_TIME.3
Normal file
52
core/curl/files/CURLINFO_APPCONNECT_TIME.3
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_APPCONNECT_TIME.md
|
||||||
|
.TH CURLINFO_APPCONNECT_TIME 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_APPCONNECT_TIME \- get the time until the SSL/SSH handshake is completed
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME,
|
||||||
|
double *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the time, in seconds, it took from the
|
||||||
|
start until the SSL/SSH connect/handshake to the remote host was completed.
|
||||||
|
This time is most often close to the \fICURLINFO_PRETRANSFER_TIME(3)\fP time,
|
||||||
|
except for cases such as HTTP pipelining where the pretransfer time can be
|
||||||
|
delayed due to waits in line for the pipeline and more.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
double connect;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_APPCONNECT_TIME, &connect);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %.1f", connect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.19.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_APPCONNECT_TIME_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
54
core/curl/files/CURLINFO_APPCONNECT_TIME_T.3
Normal file
54
core/curl/files/CURLINFO_APPCONNECT_TIME_T.3
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_APPCONNECT_TIME_T.md
|
||||||
|
.TH CURLINFO_APPCONNECT_TIME_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_APPCONNECT_TIME_T \- time until the SSL/SSH handshake completed
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_APPCONNECT_TIME_T,
|
||||||
|
curl_off_t *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a curl_off_t to receive the time, in microseconds, it took
|
||||||
|
from the start until the SSL/SSH connect/handshake to the remote host was
|
||||||
|
completed. This time is most often close to the
|
||||||
|
\fICURLINFO_PRETRANSFER_TIME_T(3)\fP time, except for cases such as HTTP
|
||||||
|
pipelining where the pretransfer time can be delayed due to waits in line for
|
||||||
|
the pipeline and more.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_off_t connect;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_APPCONNECT_TIME_T, &connect);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", connect / 1000000,
|
||||||
|
(long)(connect % 1000000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.61.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_APPCONNECT_TIME (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
47
core/curl/files/CURLINFO_CAINFO.3
Normal file
47
core/curl/files/CURLINFO_CAINFO.3
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CAINFO.md
|
||||||
|
.TH CURLINFO_CAINFO 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CAINFO \- get the default built\-in CA certificate path
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CAINFO, char **path);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a char pointer to receive the pointer to a null\-terminated
|
||||||
|
string holding the default built\-in path used for the \fICURLOPT_CAINFO(3)\fP
|
||||||
|
option unless set by the user.
|
||||||
|
|
||||||
|
Note that in a situation where libcurl has been built to support multiple TLS
|
||||||
|
libraries, this option might return a string even if the specific TLS library
|
||||||
|
currently set to be used does not support \fICURLOPT_CAINFO(3)\fP.
|
||||||
|
|
||||||
|
This is a path identifying a single file containing CA certificates.
|
||||||
|
|
||||||
|
The \fBpath\fP pointer is set to NULL if there is no default path.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
char *cainfo = NULL;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_CAINFO, &cainfo);
|
||||||
|
if(cainfo) {
|
||||||
|
printf("default ca info path: %s\\n", cainfo);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.84.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CAPATH (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
47
core/curl/files/CURLINFO_CAPATH.3
Normal file
47
core/curl/files/CURLINFO_CAPATH.3
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CAPATH.md
|
||||||
|
.TH CURLINFO_CAPATH 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CAPATH \- get the default built\-in CA path string
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CAPATH, char **path);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a char pointer to receive the pointer to a null\-terminated
|
||||||
|
string holding the default built\-in path used for the \fICURLOPT_CAPATH(3)\fP
|
||||||
|
option unless set by the user.
|
||||||
|
|
||||||
|
Note that in a situation where libcurl has been built to support multiple TLS
|
||||||
|
libraries, this option might return a string even if the specific TLS library
|
||||||
|
currently set to be used does not support \fICURLOPT_CAPATH(3)\fP.
|
||||||
|
|
||||||
|
This is a path identifying a directory.
|
||||||
|
|
||||||
|
The \fBpath\fP pointer is set to NULL if there is no default path.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
char *capath = NULL;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_CAPATH, &capath);
|
||||||
|
if(capath) {
|
||||||
|
printf("default ca path: %s\\n", capath);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.84.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CAINFO (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
82
core/curl/files/CURLINFO_CERTINFO.3
Normal file
82
core/curl/files/CURLINFO_CERTINFO.3
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CERTINFO.md
|
||||||
|
.TH CURLINFO_CERTINFO 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CERTINFO \- get the TLS certificate chain
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CERTINFO,
|
||||||
|
struct curl_certinfo **chainp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a \fIstruct curl_certinfo \fP* and it is set to point to a
|
||||||
|
struct that holds info about the server\(aqs certificate chain, assuming you had
|
||||||
|
\fICURLOPT_CERTINFO(3)\fP enabled when the request was made.
|
||||||
|
|
||||||
|
.nf
|
||||||
|
struct curl_certinfo {
|
||||||
|
int num_of_certs;
|
||||||
|
struct curl_slist **certinfo;
|
||||||
|
};
|
||||||
|
.fi
|
||||||
|
|
||||||
|
The \fIcertinfo\fP struct member is an array of linked lists of certificate
|
||||||
|
information. The \fInum_of_certs\fP struct member is the number of certificates
|
||||||
|
which is the number of elements in the array. Each certificate\(aqs list has
|
||||||
|
items with textual information in the format "name:content" such as
|
||||||
|
\&"Subject:Foo", "Issuer:Bar", etc. The items in each list varies depending on
|
||||||
|
the SSL backend and the certificate.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All TLS\-based
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
|
||||||
|
|
||||||
|
/* connect to any HTTPS site, trusted or not */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_CERTINFO, 1L);
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
int i;
|
||||||
|
struct curl_certinfo *ci;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CERTINFO, &ci);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
printf("%d certs!\\n", ci->num_of_certs);
|
||||||
|
|
||||||
|
for(i = 0; i < ci->num_of_certs; i++) {
|
||||||
|
struct curl_slist *slist;
|
||||||
|
|
||||||
|
for(slist = ci->certinfo[i]; slist; slist = slist->next)
|
||||||
|
printf("%s\\n", slist->data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
|
||||||
|
See also the \fIcertinfo.c\fP example.
|
||||||
|
.SH AVAILABILITY
|
||||||
|
This option is only working in libcurl built with OpenSSL, GnuTLS, Schannel or
|
||||||
|
Secure Transport. GnuTLS support added in 7.42.0. Schannel support added in
|
||||||
|
7.50.0. Secure Transport support added in 7.79.0.
|
||||||
|
|
||||||
|
Added in 7.19.1
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CAPATH (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
61
core/curl/files/CURLINFO_CONDITION_UNMET.3
Normal file
61
core/curl/files/CURLINFO_CONDITION_UNMET.3
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CONDITION_UNMET.md
|
||||||
|
.TH CURLINFO_CONDITION_UNMET 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CONDITION_UNMET \- get info on unmet time conditional or 304 HTTP response.
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONDITION_UNMET,
|
||||||
|
long *unmet);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the number 1 if the condition provided in
|
||||||
|
the previous request did not match (see \fICURLOPT_TIMECONDITION(3)\fP). Alas,
|
||||||
|
if this returns a 1 you know that the reason you did not get data in return is
|
||||||
|
because it did not fulfill the condition. The long this argument points to
|
||||||
|
gets a zero stored if the condition instead was met. This can also return 1 if
|
||||||
|
the server responded with a 304 HTTP status code, for example after sending a
|
||||||
|
custom "If\-Match\-*" header.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP and some
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* January 1, 2020 is 1577833200 */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_TIMEVALUE, 1577833200L);
|
||||||
|
|
||||||
|
/* If-Modified-Since the above time stamp */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_TIMECONDITION,
|
||||||
|
(long)CURL_TIMECOND_IFMODSINCE);
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* check the time condition */
|
||||||
|
long unmet;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CONDITION_UNMET, &unmet);
|
||||||
|
if(!res) {
|
||||||
|
printf("The time condition was %sfulfilled\\n", unmet?"NOT":"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.19.4
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_TIMECONDITION (3),
|
||||||
|
.BR CURLOPT_TIMEVALUE (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
48
core/curl/files/CURLINFO_CONNECT_TIME.3
Normal file
48
core/curl/files/CURLINFO_CONNECT_TIME.3
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CONNECT_TIME.md
|
||||||
|
.TH CURLINFO_CONNECT_TIME 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CONNECT_TIME \- get the time until connect
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME, double *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the total time in seconds from the start
|
||||||
|
until the connection to the remote host (or proxy) was completed.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
double connect;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME, &connect);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %.1f", connect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.4.1
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CONNECT_TIME_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
51
core/curl/files/CURLINFO_CONNECT_TIME_T.3
Normal file
51
core/curl/files/CURLINFO_CONNECT_TIME_T.3
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CONNECT_TIME_T.md
|
||||||
|
.TH CURLINFO_CONNECT_TIME_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CONNECT_TIME_T \- get the time until connect
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONNECT_TIME_T,
|
||||||
|
curl_off_t *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a curl_off_t to receive the total time in microseconds from
|
||||||
|
the start until the connection to the remote host (or proxy) was completed.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_off_t connect;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CONNECT_TIME_T, &connect);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", connect / 1000000,
|
||||||
|
(long)(connect % 1000000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.61.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CONNECT_TIME (3),
|
||||||
|
.BR CURLOPT_CONNECTTIMEOUT (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
51
core/curl/files/CURLINFO_CONN_ID.3
Normal file
51
core/curl/files/CURLINFO_CONN_ID.3
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CONN_ID.md
|
||||||
|
.TH CURLINFO_CONN_ID 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CONN_ID \- get the ID of the last connection used by the handle
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONN_ID,
|
||||||
|
curl_off_t *conn_id);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a \fIcurl_off_t\fP to receive the connection identifier last
|
||||||
|
used by the handle. Stores \-1 if there was no connection used.
|
||||||
|
|
||||||
|
The connection id is unique among all connections using the same
|
||||||
|
connection cache. This is implicitly the case for all connections in the
|
||||||
|
same multi handle.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
curl_off_t conn_id;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CONN_ID, &conn_id);
|
||||||
|
if(!res) {
|
||||||
|
printf("Connection used: %" CURL_FORMAT_CURL_OFF_T "\\n", conn_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 8.2.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_XFER_ID (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
51
core/curl/files/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
Normal file
51
core/curl/files/CURLINFO_CONTENT_LENGTH_DOWNLOAD.3
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CONTENT_LENGTH_DOWNLOAD.md
|
||||||
|
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CONTENT_LENGTH_DOWNLOAD \- get content\-length of download
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD,
|
||||||
|
double *content_length);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the content\-length of the download. This
|
||||||
|
is the value read from the Content\-Length: field. Since 7.19.4, this returns
|
||||||
|
-1 if the size is not known.
|
||||||
|
|
||||||
|
\fICURLINFO_CONTENT_LENGTH_DOWNLOAD_T(3)\fP is a newer replacement that returns a more
|
||||||
|
sensible variable type.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* check the size */
|
||||||
|
double cl;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &cl);
|
||||||
|
if(!res) {
|
||||||
|
printf("Size: %.0f\\n", cl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.6.1. Deprecated since 7.55.0.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CONTENT_LENGTH_UPLOAD (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
48
core/curl/files/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
Normal file
48
core/curl/files/CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.3
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CONTENT_LENGTH_DOWNLOAD_T.md
|
||||||
|
.TH CURLINFO_CONTENT_LENGTH_DOWNLOAD_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CONTENT_LENGTH_DOWNLOAD_T \- get content\-length of download
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T,
|
||||||
|
curl_off_t *content_length);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a \fIcurl_off_t\fP to receive the content\-length of the
|
||||||
|
download. This is the value read from the Content\-Length: field. Stores \-1 if
|
||||||
|
the size is not known.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* check the size */
|
||||||
|
curl_off_t cl;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD_T, &cl);
|
||||||
|
if(!res) {
|
||||||
|
printf("Download size: %" CURL_FORMAT_CURL_OFF_T "\\n", cl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.55.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CONTENT_LENGTH_UPLOAD_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
50
core/curl/files/CURLINFO_CONTENT_LENGTH_UPLOAD.3
Normal file
50
core/curl/files/CURLINFO_CONTENT_LENGTH_UPLOAD.3
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CONTENT_LENGTH_UPLOAD.md
|
||||||
|
.TH CURLINFO_CONTENT_LENGTH_UPLOAD 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CONTENT_LENGTH_UPLOAD \- get the specified size of the upload
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD,
|
||||||
|
double *content_length);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the specified size of the upload. Since
|
||||||
|
7.19.4, this returns \-1 if the size is not known.
|
||||||
|
|
||||||
|
\fICURLINFO_CONTENT_LENGTH_UPLOAD_T(3)\fP is a newer replacement that returns a
|
||||||
|
more sensible variable type.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the upload */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* check the size */
|
||||||
|
double cl;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_UPLOAD, &cl);
|
||||||
|
if(!res) {
|
||||||
|
printf("Size: %.0f\\n", cl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.6.1. Deprecated since 7.55.0.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CONTENT_LENGTH_DOWNLOAD_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
47
core/curl/files/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
Normal file
47
core/curl/files/CURLINFO_CONTENT_LENGTH_UPLOAD_T.3
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CONTENT_LENGTH_UPLOAD_T.md
|
||||||
|
.TH CURLINFO_CONTENT_LENGTH_UPLOAD_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CONTENT_LENGTH_UPLOAD_T \- get the specified size of the upload
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_LENGTH_UPLOAD_T,
|
||||||
|
curl_off_t *content_length);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a \fIcurl_off_t\fP to receive the specified size of the
|
||||||
|
upload. Stores \-1 if the size is not known.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the upload */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* check the size */
|
||||||
|
curl_off_t cl;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_UPLOAD_T, &cl);
|
||||||
|
if(!res) {
|
||||||
|
printf("Upload size: %" CURL_FORMAT_CURL_OFF_T "\\n", cl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.55.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CONTENT_LENGTH_DOWNLOAD_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
56
core/curl/files/CURLINFO_CONTENT_TYPE.3
Normal file
56
core/curl/files/CURLINFO_CONTENT_TYPE.3
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_CONTENT_TYPE.md
|
||||||
|
.TH CURLINFO_CONTENT_TYPE 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_CONTENT_TYPE \- get Content\-Type
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_CONTENT_TYPE, char **ct);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a char pointer to receive the content\-type of the downloaded
|
||||||
|
object. This is the value read from the Content\-Type: field. If you get NULL,
|
||||||
|
it means that the server did not send a valid Content\-Type header or that the
|
||||||
|
protocol used does not support this.
|
||||||
|
|
||||||
|
The \fBct\fP pointer is set to NULL or pointing to private memory. You MUST
|
||||||
|
NOT free it \- it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
|
||||||
|
corresponding CURL handle.
|
||||||
|
|
||||||
|
The modern way to get this header from a response is to instead use the
|
||||||
|
\fIcurl_easy_header(3)\fP function.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* extract the content-type */
|
||||||
|
char *ct = NULL;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);
|
||||||
|
if(!res && ct) {
|
||||||
|
printf("Content-Type: %s\\n", ct);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.9.4
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_HEADERFUNCTION (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_header (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
63
core/curl/files/CURLINFO_COOKIELIST.3
Normal file
63
core/curl/files/CURLINFO_COOKIELIST.3
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_COOKIELIST.md
|
||||||
|
.TH CURLINFO_COOKIELIST 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_COOKIELIST \- get all known cookies
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_COOKIELIST,
|
||||||
|
struct curl_slist **cookies);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a \(aqstruct curl_slist *\(aq to receive a linked\-list of all
|
||||||
|
cookies curl knows (expired ones, too). Do not forget to call
|
||||||
|
\fIcurl_slist_free_all(3)\fP on the list after it has been used. If there are no
|
||||||
|
cookies (cookies for the handle have not been enabled or simply none have been
|
||||||
|
received) the \(aqstruct curl_slist *\(aq is made a NULL pointer.
|
||||||
|
|
||||||
|
Since 7.43.0 cookies that were imported in the Set\-Cookie format without a
|
||||||
|
domain name are not exported by this option.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* enable the cookie engine */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* extract all known cookies */
|
||||||
|
struct curl_slist *cookies = NULL;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_COOKIELIST, &cookies);
|
||||||
|
if(!res && cookies) {
|
||||||
|
/* a linked list of cookies in cookie file format */
|
||||||
|
struct curl_slist *each = cookies;
|
||||||
|
while(each) {
|
||||||
|
printf("%s\\n", each->data);
|
||||||
|
each = each->next;
|
||||||
|
}
|
||||||
|
/* we must free these cookies when we are done */
|
||||||
|
curl_slist_free_all(cookies);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.14.1
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_COOKIELIST (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
53
core/curl/files/CURLINFO_EFFECTIVE_METHOD.3
Normal file
53
core/curl/files/CURLINFO_EFFECTIVE_METHOD.3
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_EFFECTIVE_METHOD.md
|
||||||
|
.TH CURLINFO_EFFECTIVE_METHOD 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_EFFECTIVE_METHOD \- get the last used HTTP method
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_METHOD,
|
||||||
|
char **methodp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass in a pointer to a char pointer and get the last used effective HTTP
|
||||||
|
method.
|
||||||
|
|
||||||
|
In cases when you have asked libcurl to follow redirects, the method may not be
|
||||||
|
the same method the first request would use.
|
||||||
|
|
||||||
|
The \fBmethodp\fP pointer is NULL or points to private memory. You MUST NOT
|
||||||
|
free \- it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
|
||||||
|
corresponding CURL handle.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "data");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
char *method = NULL;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_METHOD, &method);
|
||||||
|
if(method)
|
||||||
|
printf("Redirected to method: %s\\n", method);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.72.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_CUSTOMREQUEST (3),
|
||||||
|
.BR CURLOPT_FOLLOWLOCATION (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
49
core/curl/files/CURLINFO_EFFECTIVE_URL.3
Normal file
49
core/curl/files/CURLINFO_EFFECTIVE_URL.3
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_EFFECTIVE_URL.md
|
||||||
|
.TH CURLINFO_EFFECTIVE_URL 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_EFFECTIVE_URL \- get the last used URL
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_EFFECTIVE_URL, char **urlp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass in a pointer to a char pointer and get the last used effective URL.
|
||||||
|
|
||||||
|
In cases when you have asked libcurl to follow redirects, it may not be the same
|
||||||
|
value you set with \fICURLOPT_URL(3)\fP.
|
||||||
|
|
||||||
|
The \fBurlp\fP pointer is NULL or points to private memory. You MUST NOT free
|
||||||
|
- it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the corresponding
|
||||||
|
CURL handle.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
char *url = NULL;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &url);
|
||||||
|
if(url)
|
||||||
|
printf("Redirect to: %s\\n", url);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.4
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_FOLLOWLOCATION (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
57
core/curl/files/CURLINFO_FILETIME.3
Normal file
57
core/curl/files/CURLINFO_FILETIME.3
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_FILETIME.md
|
||||||
|
.TH CURLINFO_FILETIME 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_FILETIME \- get the remote time of the retrieved document
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME, long *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the remote time of the retrieved document
|
||||||
|
in number of seconds since January 1 1970 in the GMT/UTC time zone. If you get
|
||||||
|
-1, it can be because of many reasons (it might be unknown, the server might
|
||||||
|
hide it or the server does not support the command that tells document time
|
||||||
|
etc) and the time of the document is unknown.
|
||||||
|
|
||||||
|
You must tell libcurl to collect this information before the transfer is made,
|
||||||
|
by using the \fICURLOPT_FILETIME(3)\fP option to \fIcurl_easy_setopt(3)\fP or
|
||||||
|
you this unconditionally gets a \-1 back.
|
||||||
|
|
||||||
|
Consider using \fICURLINFO_FILETIME_T(3)\fP to be able to extract dates beyond
|
||||||
|
the year 2038 on systems using 32 bit longs (Windows).
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S), FTP(S), SFTP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
/* Ask for filetime */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_FILETIME, 1L);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
long filetime = 0;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_FILETIME, &filetime);
|
||||||
|
if((CURLE_OK == res) && (filetime >= 0)) {
|
||||||
|
time_t file_time = (time_t)filetime;
|
||||||
|
printf("filetime: %s", ctime(&file_time));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.5
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_FILETIME (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
59
core/curl/files/CURLINFO_FILETIME_T.3
Normal file
59
core/curl/files/CURLINFO_FILETIME_T.3
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_FILETIME_T.md
|
||||||
|
.TH CURLINFO_FILETIME 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_FILETIME_T \- get the remote time of the retrieved document
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FILETIME_T,
|
||||||
|
curl_off_t *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a curl_off_t to receive the remote time of the retrieved
|
||||||
|
document in number of seconds since January 1 1970 in the GMT/UTC time
|
||||||
|
zone. If you get \-1, it can be because of many reasons (it might be unknown,
|
||||||
|
the server might hide it or the server does not support the command that tells
|
||||||
|
document time etc) and the time of the document is unknown.
|
||||||
|
|
||||||
|
You must ask libcurl to collect this information before the transfer is made,
|
||||||
|
by using the \fICURLOPT_FILETIME(3)\fP option to \fIcurl_easy_setopt(3)\fP or
|
||||||
|
you unconditionally get a \-1 back.
|
||||||
|
|
||||||
|
This option is an alternative to \fICURLINFO_FILETIME(3)\fP to allow systems
|
||||||
|
with 32 bit long variables to extract dates outside of the 32bit timestamp
|
||||||
|
range.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S), FTP(S), SFTP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||||
|
/* Ask for filetime */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_FILETIME, 1L);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
curl_off_t filetime;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_FILETIME_T, &filetime);
|
||||||
|
if((CURLE_OK == res) && (filetime >= 0)) {
|
||||||
|
time_t file_time = (time_t)filetime;
|
||||||
|
printf("filetime: %s", ctime(&file_time));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.59.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_FILETIME (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
51
core/curl/files/CURLINFO_FTP_ENTRY_PATH.3
Normal file
51
core/curl/files/CURLINFO_FTP_ENTRY_PATH.3
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_FTP_ENTRY_PATH.md
|
||||||
|
.TH CURLINFO_FTP_ENTRY_PATH 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_FTP_ENTRY_PATH \- get entry path in FTP server
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_FTP_ENTRY_PATH, char **path);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a char pointer to receive a pointer to a string holding the
|
||||||
|
path of the entry path. That is the initial path libcurl ended up in when
|
||||||
|
logging on to the remote FTP server. This stores a NULL as pointer if
|
||||||
|
something is wrong.
|
||||||
|
|
||||||
|
The \fBpath\fP pointer is NULL or points to private memory. You MUST NOT free
|
||||||
|
- it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the corresponding
|
||||||
|
CURL handle.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
FTP(S) and SFTP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com");
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* extract the entry path */
|
||||||
|
char *ep = NULL;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_FTP_ENTRY_PATH, &ep);
|
||||||
|
if(!res && ep) {
|
||||||
|
printf("Entry path was: %s\\n", ep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.15.4. Works for SFTP since 7.21.4
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
46
core/curl/files/CURLINFO_HEADER_SIZE.3
Normal file
46
core/curl/files/CURLINFO_HEADER_SIZE.3
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_HEADER_SIZE.md
|
||||||
|
.TH CURLINFO_HEADER_SIZE 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_HEADER_SIZE \- get size of retrieved headers
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HEADER_SIZE, long *sizep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the total size of all the headers
|
||||||
|
received. Measured in number of bytes.
|
||||||
|
|
||||||
|
The total includes the size of any received headers suppressed by
|
||||||
|
\fICURLOPT_SUPPRESS_CONNECT_HEADERS(3)\fP.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long size;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_HEADER_SIZE, &size);
|
||||||
|
if(!res)
|
||||||
|
printf("Header size: %ld bytes\\n", size);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.4.1
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_REQUEST_SIZE (3),
|
||||||
|
.BR CURLINFO_SIZE_DOWNLOAD (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
58
core/curl/files/CURLINFO_HTTPAUTH_AVAIL.3
Normal file
58
core/curl/files/CURLINFO_HTTPAUTH_AVAIL.3
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_HTTPAUTH_AVAIL.md
|
||||||
|
.TH CURLINFO_HTTPAUTH_AVAIL 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_HTTPAUTH_AVAIL \- get available HTTP authentication methods
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTPAUTH_AVAIL, long *authp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive a bitmask indicating the authentication
|
||||||
|
method(s) available according to the previous response. The meaning of the
|
||||||
|
bits is explained in the \fICURLOPT_HTTPAUTH(3)\fP option for
|
||||||
|
\fIcurl_easy_setopt(3)\fP.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* extract the available authentication types */
|
||||||
|
long auth;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_HTTPAUTH_AVAIL, &auth);
|
||||||
|
if(!res) {
|
||||||
|
if(!auth)
|
||||||
|
printf("No auth available, perhaps no 401?\\n");
|
||||||
|
else {
|
||||||
|
printf("%s%s%s%s\\n",
|
||||||
|
auth & CURLAUTH_BASIC ? "Basic ":"",
|
||||||
|
auth & CURLAUTH_DIGEST ? "Digest ":"",
|
||||||
|
auth & CURLAUTH_NEGOTIATE ? "Negotiate ":"",
|
||||||
|
auth % CURLAUTH_NTLM ? "NTLM ":"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added RFC 2617 in 7.10.8
|
||||||
|
Added RFC 7616 in 7.57.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_PROXYAUTH_AVAIL (3),
|
||||||
|
.BR CURLOPT_HTTPAUTH (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
46
core/curl/files/CURLINFO_HTTP_CONNECTCODE.3
Normal file
46
core/curl/files/CURLINFO_HTTP_CONNECTCODE.3
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_HTTP_CONNECTCODE.md
|
||||||
|
.TH CURLINFO_HTTP_CONNECTCODE 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_HTTP_CONNECTCODE \- get the CONNECT response code
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_CONNECTCODE, long *p);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the last received HTTP proxy response code
|
||||||
|
to a CONNECT request. The returned value is zero if no such response code was
|
||||||
|
available.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* typically CONNECT is used to do HTTPS over HTTP proxies */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_PROXY, "http://127.0.0.1");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long code;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_HTTP_CONNECTCODE, &code);
|
||||||
|
if(!res && code)
|
||||||
|
printf("The CONNECT response code: %03ld\\n", code);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.10.7
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_RESPONSE_CODE (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
42
core/curl/files/CURLINFO_HTTP_VERSION.3
Normal file
42
core/curl/files/CURLINFO_HTTP_VERSION.3
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_HTTP_VERSION.md
|
||||||
|
.TH CURLINFO_HTTP_VERSION 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_HTTP_VERSION \- get the http version used in the connection
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_HTTP_VERSION, long *p);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the version used in the last http
|
||||||
|
connection done using this handle. The returned value is
|
||||||
|
CURL_HTTP_VERSION_1_0, CURL_HTTP_VERSION_1_1, CURL_HTTP_VERSION_2_0,
|
||||||
|
CURL_HTTP_VERSION_3 or 0 if the version cannot be determined.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long http_version;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_HTTP_VERSION, &http_version);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.50.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_RESPONSE_CODE (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
58
core/curl/files/CURLINFO_LASTSOCKET.3
Normal file
58
core/curl/files/CURLINFO_LASTSOCKET.3
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_LASTSOCKET.md
|
||||||
|
.TH CURLINFO_LASTSOCKET 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_LASTSOCKET \- get the last socket used
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LASTSOCKET, long *socket);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Deprecated since 7.45.0. Use \fICURLINFO_ACTIVESOCKET(3)\fP instead.
|
||||||
|
|
||||||
|
Pass a pointer to a long to receive the last socket used by this curl
|
||||||
|
session. If the socket is no longer valid, \-1 is returned. When you finish
|
||||||
|
working with the socket, you must call \fIcurl_easy_cleanup(3)\fP as usual and
|
||||||
|
let libcurl close the socket and cleanup other resources associated with the
|
||||||
|
handle. This is typically used in combination with
|
||||||
|
\fICURLOPT_CONNECT_ONLY(3)\fP.
|
||||||
|
|
||||||
|
NOTE: this API is deprecated since it is not working on win64 where the SOCKET
|
||||||
|
type is 64 bits large while its \(aqlong\(aq is 32 bits. Use the
|
||||||
|
\fICURLINFO_ACTIVESOCKET(3)\fP instead, if possible.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
long sockfd; /* does not work on win64! */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Do not do the transfer - only connect to host */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_CONNECT_ONLY, 1L);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
/* Extract the socket from the curl handle */
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_LASTSOCKET, &sockfd);
|
||||||
|
|
||||||
|
if(res != CURLE_OK) {
|
||||||
|
printf("Error: %s\\n", curl_easy_strerror(res));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.15.2
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_ACTIVESOCKET (3),
|
||||||
|
.BR CURLOPT_CONNECT_ONLY (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
53
core/curl/files/CURLINFO_LOCAL_IP.3
Normal file
53
core/curl/files/CURLINFO_LOCAL_IP.3
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_LOCAL_IP.md
|
||||||
|
.TH CURLINFO_LOCAL_IP 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_LOCAL_IP \- get local IP address of last connection
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_IP, char **ip);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a char pointer to receive the pointer to a null\-terminated
|
||||||
|
string holding the IP address of the local end of most recent connection done
|
||||||
|
with this \fBcurl\fP handle. This string may be IPv6 when that is
|
||||||
|
enabled. Note that you get a pointer to a memory area that is reused at next
|
||||||
|
request so you need to copy the string if you want to keep the information.
|
||||||
|
|
||||||
|
The \fBip\fP pointer is NULL or points to private memory. You MUST NOT free \-
|
||||||
|
it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the corresponding
|
||||||
|
CURL handle.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
char *ip;
|
||||||
|
CURLcode res;
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the transfer */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
/* Check for errors */
|
||||||
|
if((res == CURLE_OK) &&
|
||||||
|
!curl_easy_getinfo(curl, CURLINFO_LOCAL_IP, &ip) && ip) {
|
||||||
|
printf("Local IP: %s\\n", ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.21.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_LOCAL_PORT (3),
|
||||||
|
.BR CURLINFO_PRIMARY_IP (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
49
core/curl/files/CURLINFO_LOCAL_PORT.3
Normal file
49
core/curl/files/CURLINFO_LOCAL_PORT.3
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_LOCAL_PORT.md
|
||||||
|
.TH CURLINFO_LOCAL_PORT 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_LOCAL_PORT \- get the latest local port number
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_LOCAL_PORT, long *portp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the local port number of the most recent
|
||||||
|
connection done with this \fBcurl\fP handle.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl;
|
||||||
|
CURLcode res;
|
||||||
|
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
long port;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_LOCAL_PORT, &port);
|
||||||
|
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("We used local port: %ld\\n", port);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.21.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_LOCAL_IP (3),
|
||||||
|
.BR CURLINFO_PRIMARY_PORT (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
49
core/curl/files/CURLINFO_NAMELOOKUP_TIME.3
Normal file
49
core/curl/files/CURLINFO_NAMELOOKUP_TIME.3
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_NAMELOOKUP_TIME.md
|
||||||
|
.TH CURLINFO_NAMELOOKUP_TIME 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_NAMELOOKUP_TIME \- get the name lookup time
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME,
|
||||||
|
double *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the total time in seconds from the start
|
||||||
|
until the name resolving was completed.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
double namelookup;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME, &namelookup);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %.1f", namelookup);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.4.1
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_NAMELOOKUP_TIME_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
50
core/curl/files/CURLINFO_NAMELOOKUP_TIME_T.3
Normal file
50
core/curl/files/CURLINFO_NAMELOOKUP_TIME_T.3
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_NAMELOOKUP_TIME_T.md
|
||||||
|
.TH CURLINFO_NAMELOOKUP_TIME_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_NAMELOOKUP_TIME_T \- get the name lookup time in microseconds
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NAMELOOKUP_TIME_T,
|
||||||
|
curl_off_t *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a curl_off_t to receive the total time in microseconds
|
||||||
|
from the start until the name resolving was completed.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_off_t namelookup;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_NAMELOOKUP_TIME_T, &namelookup);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", namelookup / 1000000,
|
||||||
|
(long)(namelookup % 1000000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.61.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_NAMELOOKUP_TIME (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
46
core/curl/files/CURLINFO_NUM_CONNECTS.3
Normal file
46
core/curl/files/CURLINFO_NUM_CONNECTS.3
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_NUM_CONNECTS.md
|
||||||
|
.TH CURLINFO_NUM_CONNECTS 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_NUM_CONNECTS \- get number of created connections
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_NUM_CONNECTS, long *nump);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive how many new connections libcurl had to
|
||||||
|
create to achieve the previous transfer (only the successful connects are
|
||||||
|
counted). Combined with \fICURLINFO_REDIRECT_COUNT(3)\fP you are able to know how
|
||||||
|
many times libcurl successfully reused existing connection(s) or not. See the
|
||||||
|
connection options of \fIcurl_easy_setopt(3)\fP to see how libcurl tries to make
|
||||||
|
persistent connections to save time.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long connects;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_NUM_CONNECTS, &connects);
|
||||||
|
if(res)
|
||||||
|
printf("It needed %ld connects\\n", connects);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.12.3
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
43
core/curl/files/CURLINFO_OS_ERRNO.3
Normal file
43
core/curl/files/CURLINFO_OS_ERRNO.3
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_OS_ERRNO.md
|
||||||
|
.TH CURLINFO_OS_ERRNO 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_OS_ERRNO \- get errno number from last connect failure
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_OS_ERRNO, long *errnop);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the errno variable from a connect failure.
|
||||||
|
Note that the value is only set on failure, it is not reset upon a successful
|
||||||
|
operation. The number is OS and system specific.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res != CURLE_OK) {
|
||||||
|
long error;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_OS_ERRNO, &error);
|
||||||
|
if(res && error) {
|
||||||
|
printf("Errno: %ld\\n", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.12.2
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
54
core/curl/files/CURLINFO_PRETRANSFER_TIME.3
Normal file
54
core/curl/files/CURLINFO_PRETRANSFER_TIME.3
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_PRETRANSFER_TIME.md
|
||||||
|
.TH CURLINFO_PRETRANSFER_TIME 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_PRETRANSFER_TIME \- get the time until the file transfer start
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME,
|
||||||
|
double *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the time, in seconds, it took from the
|
||||||
|
start until the file transfer is just about to begin.
|
||||||
|
|
||||||
|
This time\-stamp includes all pre\-transfer commands and negotiations that are
|
||||||
|
specific to the particular protocol(s) involved. It includes the sending of
|
||||||
|
the protocol\-specific instructions that trigger a transfer.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
double pretransfer;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME, &pretransfer);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %.1f", pretransfer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.4.1
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CONNECT_TIME_T (3),
|
||||||
|
.BR CURLINFO_PRETRANSFER_TIME_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
56
core/curl/files/CURLINFO_PRETRANSFER_TIME_T.3
Normal file
56
core/curl/files/CURLINFO_PRETRANSFER_TIME_T.3
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_PRETRANSFER_TIME_T.md
|
||||||
|
.TH CURLINFO_PRETRANSFER_TIME_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_PRETRANSFER_TIME_T \- get the time until the file transfer start
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRETRANSFER_TIME_T,
|
||||||
|
curl_off_t *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a curl_off_t to receive the time, in microseconds, it took
|
||||||
|
from the start until the file transfer is just about to begin.
|
||||||
|
|
||||||
|
This time\-stamp includes all pre\-transfer commands and negotiations that are
|
||||||
|
specific to the particular protocol(s) involved. It includes the sending of
|
||||||
|
the protocol\-specific instructions that trigger a transfer.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_off_t pretransfer;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_PRETRANSFER_TIME_T, &pretransfer);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld\\n",
|
||||||
|
pretransfer / 1000000,
|
||||||
|
(long)(pretransfer % 1000000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.61.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CONNECT_TIME (3),
|
||||||
|
.BR CURLINFO_PRETRANSFER_TIME_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
54
core/curl/files/CURLINFO_PRIMARY_IP.3
Normal file
54
core/curl/files/CURLINFO_PRIMARY_IP.3
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_PRIMARY_IP.md
|
||||||
|
.TH CURLINFO_PRIMARY_IP 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_PRIMARY_IP \- get IP address of last connection
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_IP, char **ip);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a char pointer to receive the pointer to a null\-terminated
|
||||||
|
string holding the IP address of the most recent connection done with this
|
||||||
|
\fBcurl\fP handle. This string may be IPv6 when that is enabled. Note that you
|
||||||
|
get a pointer to a memory area that is reused at next request so you need to
|
||||||
|
copy the string if you want to keep the information.
|
||||||
|
|
||||||
|
The \fBip\fP pointer is NULL or points to private memory. You MUST NOT free \-
|
||||||
|
it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the corresponding
|
||||||
|
CURL handle.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All network based ones
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
char *ip;
|
||||||
|
CURLcode res;
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the transfer */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
/* Check for errors */
|
||||||
|
if((res == CURLE_OK) &&
|
||||||
|
!curl_easy_getinfo(curl, CURLINFO_PRIMARY_IP, &ip) && ip) {
|
||||||
|
printf("IP: %s\\n", ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.19.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_LOCAL_IP (3),
|
||||||
|
.BR CURLINFO_LOCAL_PORT (3),
|
||||||
|
.BR CURLINFO_PRIMARY_PORT (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
48
core/curl/files/CURLINFO_PRIMARY_PORT.3
Normal file
48
core/curl/files/CURLINFO_PRIMARY_PORT.3
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_PRIMARY_PORT.md
|
||||||
|
.TH CURLINFO_PRIMARY_PORT 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_PRIMARY_PORT \- get the latest destination port number
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIMARY_PORT, long *portp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the destination port of the most recent
|
||||||
|
connection done with this \fBcurl\fP handle.
|
||||||
|
|
||||||
|
This is the destination port of the actual TCP or UDP connection libcurl used.
|
||||||
|
If a proxy was used for the most recent transfer, this is the port number of
|
||||||
|
the proxy, if no proxy was used it is the port number of the most recently
|
||||||
|
accessed URL.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long port;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_PRIMARY_PORT, &port);
|
||||||
|
if(!res)
|
||||||
|
printf("Connected to remote port: %ld\\n", port);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.21.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_LOCAL_PORT (3),
|
||||||
|
.BR CURLINFO_PRIMARY_IP (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
49
core/curl/files/CURLINFO_PRIVATE.3
Normal file
49
core/curl/files/CURLINFO_PRIVATE.3
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_PRIVATE.md
|
||||||
|
.TH CURLINFO_PRIVATE 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_PRIVATE \- get the private pointer
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PRIVATE, char **private);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a char pointer to receive the pointer to the private data
|
||||||
|
associated with the curl handle (set with the \fICURLOPT_PRIVATE(3)\fP).
|
||||||
|
Please note that for internal reasons, the value is returned as a char
|
||||||
|
pointer, although effectively being a \(aqvoid *\(aq.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
void *pointer = (void *)0x2345454;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin");
|
||||||
|
|
||||||
|
/* set the private pointer */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_PRIVATE, pointer);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
/* extract the private pointer again */
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_PRIVATE, &pointer);
|
||||||
|
|
||||||
|
if(res)
|
||||||
|
printf("error: %s\\n", curl_easy_strerror(res));
|
||||||
|
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.10.3
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_PRIVATE (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
54
core/curl/files/CURLINFO_PROTOCOL.3
Normal file
54
core/curl/files/CURLINFO_PROTOCOL.3
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_PROTOCOL.md
|
||||||
|
.TH CURLINFO_PROTOCOL 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_PROTOCOL \- get the protocol used in the connection
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROTOCOL, long *p);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
This option is deprecated. We strongly recommend using
|
||||||
|
\fICURLINFO_SCHEME(3)\fP instead, because this option cannot return all
|
||||||
|
possible protocols!
|
||||||
|
|
||||||
|
Pass a pointer to a long to receive the version used in the last http
|
||||||
|
connection. The returned value is set to one of the CURLPROTO_* values:
|
||||||
|
|
||||||
|
.nf
|
||||||
|
CURLPROTO_DICT, CURLPROTO_FILE, CURLPROTO_FTP, CURLPROTO_FTPS,
|
||||||
|
CURLPROTO_GOPHER, CURLPROTO_HTTP, CURLPROTO_HTTPS, CURLPROTO_IMAP,
|
||||||
|
CURLPROTO_IMAPS, CURLPROTO_LDAP, CURLPROTO_LDAPS, CURLPROTO_POP3,
|
||||||
|
CURLPROTO_POP3S, CURLPROTO_RTMP, CURLPROTO_RTMPE, CURLPROTO_RTMPS,
|
||||||
|
CURLPROTO_RTMPT, CURLPROTO_RTMPTE, CURLPROTO_RTMPTS, CURLPROTO_RTSP,
|
||||||
|
CURLPROTO_SCP, CURLPROTO_SFTP, CURLPROTO_SMB, CURLPROTO_SMBS, CURLPROTO_SMTP,
|
||||||
|
CURLPROTO_SMTPS, CURLPROTO_TELNET, CURLPROTO_TFTP, CURLPROTO_MQTT
|
||||||
|
.fi
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long protocol;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_PROTOCOL, &protocol);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.52.0. Deprecated since 7.85.0.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_RESPONSE_CODE (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
59
core/curl/files/CURLINFO_PROXYAUTH_AVAIL.3
Normal file
59
core/curl/files/CURLINFO_PROXYAUTH_AVAIL.3
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_PROXYAUTH_AVAIL.md
|
||||||
|
.TH CURLINFO_PROXYAUTH_AVAIL 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_PROXYAUTH_AVAIL \- get available HTTP proxy authentication methods
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXYAUTH_AVAIL,
|
||||||
|
long *authp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive a bitmask indicating the authentication
|
||||||
|
method(s) available according to the previous response. The meaning of the
|
||||||
|
bits is explained in the \fICURLOPT_PROXYAUTH(3)\fP option for
|
||||||
|
\fIcurl_easy_setopt(3)\fP.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_PROXY, "http://127.0.0.1:80");
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* extract the available proxy authentication types */
|
||||||
|
long auth;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_PROXYAUTH_AVAIL, &auth);
|
||||||
|
if(!res) {
|
||||||
|
if(!auth)
|
||||||
|
printf("No proxy auth available, perhaps no 407?\\n");
|
||||||
|
else {
|
||||||
|
printf("%s%s%s%s\\n",
|
||||||
|
auth & CURLAUTH_BASIC ? "Basic ":"",
|
||||||
|
auth & CURLAUTH_DIGEST ? "Digest ":"",
|
||||||
|
auth & CURLAUTH_NEGOTIATE ? "Negotiate ":"",
|
||||||
|
auth % CURLAUTH_NTLM ? "NTLM ":"");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added RFC 2617 in 7.10.8
|
||||||
|
Added RFC 7616 in 7.57.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_HTTPAUTH_AVAIL (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
86
core/curl/files/CURLINFO_PROXY_ERROR.3
Normal file
86
core/curl/files/CURLINFO_PROXY_ERROR.3
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_PROXY_ERROR.md
|
||||||
|
.TH CURLINFO_PROXY_ERROR 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_PROXY_ERROR \- get the detailed (SOCKS) proxy error
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
CURLPX_OK,
|
||||||
|
CURLPX_BAD_ADDRESS_TYPE,
|
||||||
|
CURLPX_BAD_VERSION,
|
||||||
|
CURLPX_CLOSED,
|
||||||
|
CURLPX_GSSAPI,
|
||||||
|
CURLPX_GSSAPI_PERMSG,
|
||||||
|
CURLPX_GSSAPI_PROTECTION,
|
||||||
|
CURLPX_IDENTD,
|
||||||
|
CURLPX_IDENTD_DIFFER,
|
||||||
|
CURLPX_LONG_HOSTNAME,
|
||||||
|
CURLPX_LONG_PASSWD,
|
||||||
|
CURLPX_LONG_USER,
|
||||||
|
CURLPX_NO_AUTH,
|
||||||
|
CURLPX_RECV_ADDRESS,
|
||||||
|
CURLPX_RECV_AUTH,
|
||||||
|
CURLPX_RECV_CONNECT,
|
||||||
|
CURLPX_RECV_REQACK,
|
||||||
|
CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED,
|
||||||
|
CURLPX_REPLY_COMMAND_NOT_SUPPORTED,
|
||||||
|
CURLPX_REPLY_CONNECTION_REFUSED,
|
||||||
|
CURLPX_REPLY_GENERAL_SERVER_FAILURE,
|
||||||
|
CURLPX_REPLY_HOST_UNREACHABLE,
|
||||||
|
CURLPX_REPLY_NETWORK_UNREACHABLE,
|
||||||
|
CURLPX_REPLY_NOT_ALLOWED,
|
||||||
|
CURLPX_REPLY_TTL_EXPIRED,
|
||||||
|
CURLPX_REPLY_UNASSIGNED,
|
||||||
|
CURLPX_REQUEST_FAILED,
|
||||||
|
CURLPX_RESOLVE_HOST,
|
||||||
|
CURLPX_SEND_AUTH,
|
||||||
|
CURLPX_SEND_CONNECT,
|
||||||
|
CURLPX_SEND_REQUEST,
|
||||||
|
CURLPX_UNKNOWN_FAIL,
|
||||||
|
CURLPX_UNKNOWN_MODE,
|
||||||
|
CURLPX_USER_REJECTED,
|
||||||
|
CURLPX_LAST /* never use */
|
||||||
|
} CURLproxycode;
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_ERROR, long *detail);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive a detailed error code when the most recent
|
||||||
|
transfer returned a \fBCURLE_PROXY\fP error. That error code matches the
|
||||||
|
\fBCURLproxycode\fP set.
|
||||||
|
|
||||||
|
The error code is zero (\fBCURLPX_OK\fP) if no response code was available.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All that can be done over SOCKS
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://127.0.0.1");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_PROXY) {
|
||||||
|
long proxycode;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_PROXY_ERROR, &proxycode);
|
||||||
|
if(!res && proxycode)
|
||||||
|
printf("The detailed proxy error: %ld\\n", proxycode);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.73.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_RESPONSE_CODE (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3),
|
||||||
|
.BR libcurl-errors (3)
|
45
core/curl/files/CURLINFO_PROXY_SSL_VERIFYRESULT.3
Normal file
45
core/curl/files/CURLINFO_PROXY_SSL_VERIFYRESULT.3
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_PROXY_SSL_VERIFYRESULT.md
|
||||||
|
.TH CURLINFO_PROXY_SSL_VERIFYRESULT 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_PROXY_SSL_VERIFYRESULT \- get the result of the proxy certificate verification
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_SSL_VERIFYRESULT,
|
||||||
|
long *result);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the result of the certificate verification
|
||||||
|
that was requested (using the \fICURLOPT_PROXY_SSL_VERIFYPEER(3)\fP
|
||||||
|
option. This is only used for HTTPS proxies.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
long verifyresult;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_PROXY, "https://proxy:443");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res)
|
||||||
|
printf("error: %s\\n", curl_easy_strerror(res));
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_PROXY_SSL_VERIFYRESULT, &verifyresult);
|
||||||
|
printf("The peer verification said %s\\n", verifyresult?
|
||||||
|
"fine" : "bad");
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.52.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_SSL_VERIFYRESULT (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
51
core/curl/files/CURLINFO_QUEUE_TIME_T.3
Normal file
51
core/curl/files/CURLINFO_QUEUE_TIME_T.3
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_QUEUE_TIME_T.md
|
||||||
|
.TH CURLINFO_QUEUE_TIME_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_QUEUE_TIME_T \- time this transfer was queued
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_QUEUE_TIME_T,
|
||||||
|
curl_off_t *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a curl_off_t to receive the time, in microseconds, this
|
||||||
|
transfer was held in a waiting queue before it started "for real". A transfer
|
||||||
|
might be put in a queue if after getting started, it cannot create a new
|
||||||
|
connection etc due to set conditions and limits imposed by the application.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_off_t queue;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_QUEUE_TIME_T, &queue);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Queued: %" CURL_FORMAT_CURL_OFF_T ".%06ld us", queue / 1000000,
|
||||||
|
(long)(queue % 1000000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 8.6.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_STARTTRANSFER_TIME_T (3),
|
||||||
|
.BR CURLOPT_TIMEOUT (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
43
core/curl/files/CURLINFO_REDIRECT_COUNT.3
Normal file
43
core/curl/files/CURLINFO_REDIRECT_COUNT.3
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_REDIRECT_COUNT.md
|
||||||
|
.TH CURLINFO_REDIRECT_COUNT 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_REDIRECT_COUNT \- get the number of redirects
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_COUNT,
|
||||||
|
long *countp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the total number of redirections that were
|
||||||
|
actually followed.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long redirects;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_REDIRECT_COUNT, &redirects);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.9.7
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_REDIRECT_URL (3),
|
||||||
|
.BR CURLOPT_FOLLOWLOCATION (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
51
core/curl/files/CURLINFO_REDIRECT_TIME.3
Normal file
51
core/curl/files/CURLINFO_REDIRECT_TIME.3
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_REDIRECT_TIME.md
|
||||||
|
.TH CURLINFO_REDIRECT_TIME 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_REDIRECT_TIME \- get the time for all redirection steps
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME,
|
||||||
|
double *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the total time, in seconds, it took for
|
||||||
|
all redirection steps include name lookup, connect, pretransfer and transfer
|
||||||
|
before final transaction was started. \fICURLINFO_REDIRECT_TIME(3)\fP contains
|
||||||
|
the complete execution time for multiple redirections.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
double redirect;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_TIME, &redirect);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %.1f", redirect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.9.7
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_REDIRECT_COUNT (3),
|
||||||
|
.BR CURLINFO_REDIRECT_TIME_T (3),
|
||||||
|
.BR CURLINFO_REDIRECT_URL (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
53
core/curl/files/CURLINFO_REDIRECT_TIME_T.3
Normal file
53
core/curl/files/CURLINFO_REDIRECT_TIME_T.3
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_REDIRECT_TIME_T.md
|
||||||
|
.TH CURLINFO_REDIRECT_TIME_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_REDIRECT_TIME_T \- get the time for all redirection steps
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_TIME_T,
|
||||||
|
curl_off_t *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a curl_off_t to receive the total time, in microseconds, it
|
||||||
|
took for all redirection steps include name lookup, connect, pretransfer and
|
||||||
|
transfer before final transaction was started.
|
||||||
|
\fICURLINFO_REDIRECT_TIME_T(3)\fP holds the complete execution time for
|
||||||
|
multiple redirections.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_off_t redirect;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_REDIRECT_TIME_T, &redirect);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", redirect / 1000000,
|
||||||
|
(long)(redirect % 1000000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.61.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_REDIRECT_COUNT (3),
|
||||||
|
.BR CURLINFO_REDIRECT_TIME (3),
|
||||||
|
.BR CURLINFO_REDIRECT_URL (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
50
core/curl/files/CURLINFO_REDIRECT_URL.3
Normal file
50
core/curl/files/CURLINFO_REDIRECT_URL.3
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_REDIRECT_URL.md
|
||||||
|
.TH CURLINFO_REDIRECT_URL 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_REDIRECT_URL \- get the URL a redirect would go to
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REDIRECT_URL, char **urlp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a char pointer to receive the URL a redirect \fIwould\fP
|
||||||
|
take you to if you would enable \fICURLOPT_FOLLOWLOCATION(3)\fP. This can come
|
||||||
|
handy if you think using the built\-in libcurl redirect logic is not good enough
|
||||||
|
for you but you would still prefer to avoid implementing all the magic of
|
||||||
|
figuring out the new URL.
|
||||||
|
|
||||||
|
This URL is also set if the \fICURLOPT_MAXREDIRS(3)\fP limit prevented a
|
||||||
|
redirect to happen (since 7.54.1).
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
char *url = NULL;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_REDIRECT_URL, &url);
|
||||||
|
if(url)
|
||||||
|
printf("Redirect to: %s\\n", url);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.18.2
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_REDIRECT_COUNT (3),
|
||||||
|
.BR CURLINFO_REDIRECT_TIME_T (3),
|
||||||
|
.BR CURLOPT_FOLLOWLOCATION (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
48
core/curl/files/CURLINFO_REFERER.3
Normal file
48
core/curl/files/CURLINFO_REFERER.3
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_REFERER.md
|
||||||
|
.TH CURLINFO_REFERER 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_REFERER \- get the used referrer request header
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REFERER, char **hdrp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass in a pointer to a char pointer and get the referrer header used in the
|
||||||
|
most recent request.
|
||||||
|
|
||||||
|
The \fBhdrp\fP pointer is NULL or points to private memory you MUST NOT free \-
|
||||||
|
it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the corresponding
|
||||||
|
CURL handle.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_REFERER, "https://example.org/referrer");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
char *hdr = NULL;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_REFERER, &hdr);
|
||||||
|
if(hdr)
|
||||||
|
printf("Referrer header: %s\\n", hdr);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.76.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_REFERER (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_header (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
44
core/curl/files/CURLINFO_REQUEST_SIZE.3
Normal file
44
core/curl/files/CURLINFO_REQUEST_SIZE.3
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_REQUEST_SIZE.md
|
||||||
|
.TH CURLINFO_REQUEST_SIZE 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_REQUEST_SIZE \- get size of sent request
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_REQUEST_SIZE, long *sizep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the total size of the issued
|
||||||
|
requests. This is so far only for HTTP requests. Note that this may be more
|
||||||
|
than one request if \fICURLOPT_FOLLOWLOCATION(3)\fP is enabled.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long req;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_REQUEST_SIZE, &req);
|
||||||
|
if(!res)
|
||||||
|
printf("Request size: %ld bytes\\n", req);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.4.1
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_HEADER_SIZE (3),
|
||||||
|
.BR CURLINFO_SIZE_DOWNLOAD_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
46
core/curl/files/CURLINFO_RESPONSE_CODE.3
Normal file
46
core/curl/files/CURLINFO_RESPONSE_CODE.3
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_RESPONSE_CODE.md
|
||||||
|
.TH CURLINFO_RESPONSE_CODE 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_RESPONSE_CODE \- get the last response code
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RESPONSE_CODE, long *codep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the last received HTTP, FTP, SMTP or LDAP
|
||||||
|
(OpenLDAP only) response code. This option was previously known as
|
||||||
|
CURLINFO_HTTP_CODE in libcurl 7.10.7 and earlier. The stored value is zero if
|
||||||
|
no server response code has been received.
|
||||||
|
|
||||||
|
Note that a proxy\(aqs CONNECT response should be read with
|
||||||
|
\fICURLINFO_HTTP_CONNECTCODE(3)\fP and not this.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP, FTP, SMTP and LDAP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long response_code;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response_code);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.10.8. CURLINFO_HTTP_CODE was added in 7.4.1.
|
||||||
|
Support for SMTP responses added in 7.25.0, for OpenLDAP in 7.81.0.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_HTTP_CONNECTCODE (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
50
core/curl/files/CURLINFO_RETRY_AFTER.3
Normal file
50
core/curl/files/CURLINFO_RETRY_AFTER.3
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_RETRY_AFTER.md
|
||||||
|
.TH CURLINFO_RETRY_AFTER 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_RETRY_AFTER \- returns the Retry\-After retry delay
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RETRY_AFTER,
|
||||||
|
curl_off_t *retry);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a curl_off_t variable to receive the number of seconds the
|
||||||
|
HTTP server suggests the client should wait until the next request is
|
||||||
|
issued. The information from the "Retry\-After:" header.
|
||||||
|
|
||||||
|
While the HTTP header might contain a fixed date string, the
|
||||||
|
\fICURLINFO_RETRY_AFTER(3)\fP always returns the number of seconds to wait \-
|
||||||
|
or zero if there was no header or the header could not be parsed.
|
||||||
|
.SH DEFAULT
|
||||||
|
Returns zero delay if there was no header.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
curl_off_t wait = 0;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_RETRY_AFTER, &wait);
|
||||||
|
if(wait)
|
||||||
|
printf("Wait for %" CURL_FORMAT_CURL_OFF_T " seconds\\n", wait);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.66.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_HEADERFUNCTION (3),
|
||||||
|
.BR CURLOPT_STDERR (3),
|
||||||
|
.BR curl_easy_header (3)
|
42
core/curl/files/CURLINFO_RTSP_CLIENT_CSEQ.3
Normal file
42
core/curl/files/CURLINFO_RTSP_CLIENT_CSEQ.3
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_RTSP_CLIENT_CSEQ.md
|
||||||
|
.TH CURLINFO_RTSP_CLIENT_CSEQ 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_RTSP_CLIENT_CSEQ \- get the next RTSP client CSeq
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CLIENT_CSEQ,
|
||||||
|
long *cseq);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the next CSeq that is expected to be used
|
||||||
|
by the application.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
RTSP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long cseq;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_RTSP_CLIENT_CSEQ, &cseq);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.20.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_RTSP_CSEQ_RECV (3),
|
||||||
|
.BR CURLINFO_RTSP_SERVER_CSEQ (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
42
core/curl/files/CURLINFO_RTSP_CSEQ_RECV.3
Normal file
42
core/curl/files/CURLINFO_RTSP_CSEQ_RECV.3
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_RTSP_CSEQ_RECV.md
|
||||||
|
.TH CURLINFO_RTSP_CSEQ_RECV 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_RTSP_CSEQ_RECV \- get the recently received CSeq
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_CSEQ_RECV, long *cseq);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the most recently received CSeq from the
|
||||||
|
server. If your application encounters a \fICURLE_RTSP_CSEQ_ERROR\fP then you
|
||||||
|
may wish to troubleshoot and/or fix the CSeq mismatch by peeking at this
|
||||||
|
value.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
RTSP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long cseq;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_RTSP_CSEQ_RECV, &cseq);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.20.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_RTSP_SERVER_CSEQ (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
46
core/curl/files/CURLINFO_RTSP_SERVER_CSEQ.3
Normal file
46
core/curl/files/CURLINFO_RTSP_SERVER_CSEQ.3
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_RTSP_SERVER_CSEQ.md
|
||||||
|
.TH CURLINFO_RTSP_SERVER_CSEQ 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_RTSP_SERVER_CSEQ \- get the next RTSP server CSeq
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SERVER_CSEQ,
|
||||||
|
long *cseq);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the next CSeq that is expected to be used
|
||||||
|
by the application.
|
||||||
|
|
||||||
|
Listening for server initiated requests is not implemented!
|
||||||
|
|
||||||
|
Applications wishing to resume an RTSP session on another connection should
|
||||||
|
retrieve this info before closing the active connection.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
RTSP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
long cseq;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_RTSP_SERVER_CSEQ, &cseq);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.20.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_RTSP_CSEQ_RECV (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
47
core/curl/files/CURLINFO_RTSP_SESSION_ID.3
Normal file
47
core/curl/files/CURLINFO_RTSP_SESSION_ID.3
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_RTSP_SESSION_ID.md
|
||||||
|
.TH CURLINFO_RTSP_SESSION_ID 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_RTSP_SESSION_ID \- get RTSP session ID
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_RTSP_SESSION_ID, char **id);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a char pointer to receive a pointer to a string holding the
|
||||||
|
most recent RTSP Session ID.
|
||||||
|
|
||||||
|
Applications wishing to resume an RTSP session on another connection should
|
||||||
|
retrieve this info before closing the active connection.
|
||||||
|
|
||||||
|
The \fBid\fP pointer is NULL or points to private memory. You MUST NOT free \-
|
||||||
|
it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the corresponding
|
||||||
|
CURL handle.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
RTSP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "rtsp://rtsp.example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
char *id;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_RTSP_SESSION_ID, &id);
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.20.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_RTSP_CSEQ_RECV (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
49
core/curl/files/CURLINFO_SCHEME.3
Normal file
49
core/curl/files/CURLINFO_SCHEME.3
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_SCHEME.md
|
||||||
|
.TH CURLINFO_SCHEME 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_SCHEME \- get the URL scheme (sometimes called protocol) used in the connection
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SCHEME, char **scheme);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a char pointer to receive the pointer to a null\-terminated
|
||||||
|
string holding the URL scheme used for the most recent connection done with
|
||||||
|
this CURL \fBhandle\fP.
|
||||||
|
|
||||||
|
The \fBscheme\fP pointer is NULL or points to private memory. You MUST NOT
|
||||||
|
free \- it gets freed when you call \fIcurl_easy_cleanup(3)\fP on the
|
||||||
|
corresponding CURL handle.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res == CURLE_OK) {
|
||||||
|
char *scheme = NULL;
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_SCHEME, &scheme);
|
||||||
|
if(scheme)
|
||||||
|
printf("scheme: %s\\n", scheme); /* scheme: HTTP */
|
||||||
|
}
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.52.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_EFFECTIVE_URL (3),
|
||||||
|
.BR CURLINFO_PROTOCOL (3),
|
||||||
|
.BR CURLINFO_RESPONSE_CODE (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
54
core/curl/files/CURLINFO_SIZE_DOWNLOAD.3
Normal file
54
core/curl/files/CURLINFO_SIZE_DOWNLOAD.3
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_SIZE_DOWNLOAD.md
|
||||||
|
.TH CURLINFO_SIZE_DOWNLOAD 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_SIZE_DOWNLOAD \- get the number of downloaded bytes
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD, double *dlp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the total amount of bytes that were
|
||||||
|
downloaded. The amount is only for the latest transfer and gets reset again
|
||||||
|
for each new transfer. This counts actual payload data, what\(aqs also commonly
|
||||||
|
called body. All meta and header data is excluded and not included in this
|
||||||
|
number.
|
||||||
|
|
||||||
|
\fICURLINFO_SIZE_DOWNLOAD_T(3)\fP is a newer replacement that returns a more
|
||||||
|
sensible variable type.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* check the size */
|
||||||
|
double dl;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD, &dl);
|
||||||
|
if(!res) {
|
||||||
|
printf("Downloaded %.0f bytes\\n", dl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.4.1. Deprecated since 7.55.0.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_SIZE_DOWNLOAD_T (3),
|
||||||
|
.BR CURLINFO_SIZE_UPLOAD_T (3),
|
||||||
|
.BR CURLOPT_MAXFILESIZE (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
51
core/curl/files/CURLINFO_SIZE_DOWNLOAD_T.3
Normal file
51
core/curl/files/CURLINFO_SIZE_DOWNLOAD_T.3
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_SIZE_DOWNLOAD_T.md
|
||||||
|
.TH CURLINFO_SIZE_DOWNLOAD_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_SIZE_DOWNLOAD_T \- get the number of downloaded bytes
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_DOWNLOAD_T,
|
||||||
|
curl_off_t *dlp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a \fIcurl_off_t\fP to receive the total amount of bytes that
|
||||||
|
were downloaded. The amount is only for the latest transfer and gets reset
|
||||||
|
again for each new transfer. This counts actual payload data, what\(aqs also
|
||||||
|
commonly called body. All meta and header data is excluded from this amount.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
/* check the size */
|
||||||
|
curl_off_t dl;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_SIZE_DOWNLOAD_T, &dl);
|
||||||
|
if(!res) {
|
||||||
|
printf("Downloaded %" CURL_FORMAT_CURL_OFF_T " bytes\\n", dl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.55.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_SIZE_DOWNLOAD (3),
|
||||||
|
.BR CURLINFO_SIZE_UPLOAD_T (3),
|
||||||
|
.BR CURLOPT_MAXFILESIZE (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
50
core/curl/files/CURLINFO_SIZE_UPLOAD.3
Normal file
50
core/curl/files/CURLINFO_SIZE_UPLOAD.3
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_SIZE_UPLOAD.md
|
||||||
|
.TH CURLINFO_SIZE_UPLOAD 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_SIZE_UPLOAD \- get the number of uploaded bytes
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD,
|
||||||
|
double *uploadp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the total amount of bytes that were
|
||||||
|
uploaded.
|
||||||
|
|
||||||
|
\fICURLINFO_SIZE_UPLOAD_T(3)\fP is a newer replacement that returns a more
|
||||||
|
sensible variable type.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
double ul;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD, &ul);
|
||||||
|
if(!res) {
|
||||||
|
printf("Uploaded %.0f bytes\\n", ul);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.4.1. Deprecated since 7.55.0.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_SIZE_DOWNLOAD_T (3),
|
||||||
|
.BR CURLINFO_SIZE_UPLOAD_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
47
core/curl/files/CURLINFO_SIZE_UPLOAD_T.3
Normal file
47
core/curl/files/CURLINFO_SIZE_UPLOAD_T.3
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_SIZE_UPLOAD_T.md
|
||||||
|
.TH CURLINFO_SIZE_UPLOAD_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_SIZE_UPLOAD_T \- get the number of uploaded bytes
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SIZE_UPLOAD_T,
|
||||||
|
curl_off_t *uploadp);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a \fIcurl_off_t\fP to receive the total amount of bytes that
|
||||||
|
were uploaded.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
curl_off_t ul;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_SIZE_UPLOAD_T, &ul);
|
||||||
|
if(!res) {
|
||||||
|
printf("Uploaded %" CURL_FORMAT_CURL_OFF_T " bytes\\n", ul);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.55.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_SIZE_DOWNLOAD_T (3),
|
||||||
|
.BR CURLINFO_SIZE_UPLOAD (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
49
core/curl/files/CURLINFO_SPEED_DOWNLOAD.3
Normal file
49
core/curl/files/CURLINFO_SPEED_DOWNLOAD.3
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_SPEED_DOWNLOAD.md
|
||||||
|
.TH CURLINFO_SPEED_DOWNLOAD 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_SPEED_DOWNLOAD \- get download speed
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD,
|
||||||
|
double *speed);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the average download speed that curl
|
||||||
|
measured for the complete download. Measured in bytes/second.
|
||||||
|
|
||||||
|
\fICURLINFO_SPEED_DOWNLOAD_T(3)\fP is a newer replacement that returns a more
|
||||||
|
sensible variable type.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
double speed;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD, &speed);
|
||||||
|
if(!res) {
|
||||||
|
printf("Download speed %.0f bytes/sec\\n", speed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.4.1. Deprecated since 7.55.0.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_SIZE_UPLOAD_T (3),
|
||||||
|
.BR CURLINFO_SPEED_UPLOAD (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
47
core/curl/files/CURLINFO_SPEED_DOWNLOAD_T.3
Normal file
47
core/curl/files/CURLINFO_SPEED_DOWNLOAD_T.3
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_SPEED_DOWNLOAD_T.md
|
||||||
|
.TH CURLINFO_SPEED_DOWNLOAD_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_SPEED_DOWNLOAD_T \- get download speed
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_DOWNLOAD_T,
|
||||||
|
curl_off_t *speed);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a \fIcurl_off_t\fP to receive the average download speed
|
||||||
|
that curl measured for the complete download. Measured in bytes/second.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
curl_off_t speed;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_SPEED_DOWNLOAD_T, &speed);
|
||||||
|
if(!res) {
|
||||||
|
printf("Download speed %" CURL_FORMAT_CURL_OFF_T " bytes/sec\\n",
|
||||||
|
speed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.55.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_SIZE_UPLOAD_T (3),
|
||||||
|
.BR CURLINFO_SPEED_UPLOAD_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
47
core/curl/files/CURLINFO_SPEED_UPLOAD.3
Normal file
47
core/curl/files/CURLINFO_SPEED_UPLOAD.3
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_SPEED_UPLOAD.md
|
||||||
|
.TH CURLINFO_SPEED_UPLOAD 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_SPEED_UPLOAD \- get upload speed
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD, double *speed);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the average upload speed that curl
|
||||||
|
measured for the complete upload. Measured in bytes/second.
|
||||||
|
|
||||||
|
\fICURLINFO_SPEED_UPLOAD_T(3)\fP is a newer replacement that returns a more
|
||||||
|
sensible variable type.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
double speed;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD, &speed);
|
||||||
|
if(!res) {
|
||||||
|
printf("Upload speed %.0f bytes/sec\\n", speed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.4.1. Deprecated since 7.55.0.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_SPEED_DOWNLOAD_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
45
core/curl/files/CURLINFO_SPEED_UPLOAD_T.3
Normal file
45
core/curl/files/CURLINFO_SPEED_UPLOAD_T.3
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_SPEED_UPLOAD_T.md
|
||||||
|
.TH CURLINFO_SPEED_UPLOAD_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_SPEED_UPLOAD_T \- get upload speed
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SPEED_UPLOAD_T,
|
||||||
|
curl_off_t *speed);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a \fIcurl_off_t\fP to receive the average upload speed that
|
||||||
|
curl measured for the complete upload. Measured in bytes/second.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
curl_off_t speed;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_SPEED_UPLOAD_T, &speed);
|
||||||
|
if(!res) {
|
||||||
|
printf("Upload speed %" CURL_FORMAT_CURL_OFF_T " bytes/sec\\n", speed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.55.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_SPEED_DOWNLOAD_T (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
46
core/curl/files/CURLINFO_SSL_ENGINES.3
Normal file
46
core/curl/files/CURLINFO_SSL_ENGINES.3
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_SSL_ENGINES.md
|
||||||
|
.TH CURLINFO_SSL_ENGINES 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_SSL_ENGINES \- get an slist of OpenSSL crypto\-engines
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_ENGINES,
|
||||||
|
struct curl_slist **engine_list);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass the address of a \(aqstruct curl_slist *\(aq to receive a linked\-list of
|
||||||
|
OpenSSL crypto\-engines supported. Note that engines are normally implemented
|
||||||
|
in separate dynamic libraries. Hence not all the returned engines may be
|
||||||
|
available at runtime. \fBNOTE:\fP you must call \fIcurl_slist_free_all(3)\fP
|
||||||
|
on the list pointer once you are done with it, as libcurl does not free this
|
||||||
|
data for you.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All TLS based ones.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
struct curl_slist *engines;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_SSL_ENGINES, &engines);
|
||||||
|
if((res == CURLE_OK) && engines) {
|
||||||
|
/* we have a list, free it when done using it */
|
||||||
|
curl_slist_free_all(engines);
|
||||||
|
}
|
||||||
|
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.12.3. Available in OpenSSL builds with "engine" support.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_SSLENGINE (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
46
core/curl/files/CURLINFO_SSL_VERIFYRESULT.3
Normal file
46
core/curl/files/CURLINFO_SSL_VERIFYRESULT.3
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_SSL_VERIFYRESULT.md
|
||||||
|
.TH CURLINFO_SSL_VERIFYRESULT 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_SSL_VERIFYRESULT \- get the result of the certificate verification
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_SSL_VERIFYRESULT,
|
||||||
|
long *result);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a long to receive the result of the server SSL certificate
|
||||||
|
verification that was requested (using the \fICURLOPT_SSL_VERIFYPEER(3)\fP
|
||||||
|
option).
|
||||||
|
|
||||||
|
0 is a positive result. Non\-zero is an error.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All using TLS
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
long verifyresult;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res)
|
||||||
|
printf("error: %s\\n", curl_easy_strerror(res));
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_SSL_VERIFYRESULT, &verifyresult);
|
||||||
|
printf("The peer verification said %s\\n", verifyresult?
|
||||||
|
"BAAAD":"fine");
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.5. Only set by the OpenSSL/libressl/boringssl and GnuTLS backends.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_PROXY_SSL_VERIFYRESULT (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
52
core/curl/files/CURLINFO_STARTTRANSFER_TIME.3
Normal file
52
core/curl/files/CURLINFO_STARTTRANSFER_TIME.3
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_STARTTRANSFER_TIME.md
|
||||||
|
.TH CURLINFO_STARTTRANSFER_TIME 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_STARTTRANSFER_TIME \- get the time until the first byte is received
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME,
|
||||||
|
double *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the time, in seconds, it took from the
|
||||||
|
start until the first byte is received by libcurl. This includes
|
||||||
|
\fICURLINFO_PRETRANSFER_TIME(3)\fP and also the time the server needs to
|
||||||
|
calculate the result.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
double start;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME, &start);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %.1f", start);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.9.2
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_STARTTRANSFER_TIME_T (3),
|
||||||
|
.BR CURLOPT_TIMEOUT (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
54
core/curl/files/CURLINFO_STARTTRANSFER_TIME_T.3
Normal file
54
core/curl/files/CURLINFO_STARTTRANSFER_TIME_T.3
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_STARTTRANSFER_TIME_T.md
|
||||||
|
.TH CURLINFO_STARTTRANSFER_TIME_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_STARTTRANSFER_TIME_T \- get the time until the first byte is received
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_STARTTRANSFER_TIME_T,
|
||||||
|
curl_off_t *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a curl_off_t to receive the time, in microseconds,
|
||||||
|
it took from the
|
||||||
|
start until the first byte is received by libcurl. This includes
|
||||||
|
\fICURLINFO_PRETRANSFER_TIME_T(3)\fP and also the time the server needs to
|
||||||
|
calculate the result.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_off_t start;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_STARTTRANSFER_TIME_T, &start);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", start / 1000000,
|
||||||
|
(long)(start % 1000000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.61.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_STARTTRANSFER_TIME (3),
|
||||||
|
.BR CURLOPT_TIMEOUT (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
56
core/curl/files/CURLINFO_TLS_SESSION.3
Normal file
56
core/curl/files/CURLINFO_TLS_SESSION.3
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_TLS_SESSION.md
|
||||||
|
.TH CURLINFO_TLS_SESSION 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_TLS_SESSION \- get TLS session info
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SESSION,
|
||||||
|
struct curl_tlssessioninfo **session);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
\fBThis option has been superseded\fP by \fICURLINFO_TLS_SSL_PTR(3)\fP which
|
||||||
|
was added in 7.48.0. The only reason you would use this option instead is if
|
||||||
|
you could be using a version of libcurl earlier than 7.48.0.
|
||||||
|
|
||||||
|
This option is exactly the same as \fICURLINFO_TLS_SSL_PTR(3)\fP except in the
|
||||||
|
case of OpenSSL. If the session \fIbackend\fP is CURLSSLBACKEND_OPENSSL the
|
||||||
|
session \fIinternals\fP pointer varies depending on the option:
|
||||||
|
|
||||||
|
\fICURLINFO_TLS_SESSION(3)\fP OpenSSL session \fIinternals\fP is \fBSSL_CTX \fP*.
|
||||||
|
|
||||||
|
\fICURLINFO_TLS_SSL_PTR(3)\fP OpenSSL session \fIinternals\fP is \fBSSL \fP*.
|
||||||
|
|
||||||
|
You can obtain an \fBSSL_CTX\fP pointer from an SSL pointer using OpenSSL
|
||||||
|
function \fISSL_get_SSL_CTX(3)\fP. Therefore unless you need compatibility
|
||||||
|
with older versions of libcurl use \fICURLINFO_TLS_SSL_PTR(3)\fP. Refer to
|
||||||
|
that document for more information.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All TLS\-based
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
struct curl_tlssessioninfo *tls;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(res)
|
||||||
|
printf("error: %s\\n", curl_easy_strerror(res));
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_TLS_SESSION, &tls);
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.34.0. Deprecated since 7.48.0 and supported OpenSSL, GnuTLS, and
|
||||||
|
NSS only up until this version was released.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_TLS_SSL_PTR (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
139
core/curl/files/CURLINFO_TLS_SSL_PTR.3
Normal file
139
core/curl/files/CURLINFO_TLS_SSL_PTR.3
Normal file
|
@ -0,0 +1,139 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_TLS_SSL_PTR.md
|
||||||
|
.TH CURLINFO_TLS_SSL_PTR 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_TLS_SESSION, CURLINFO_TLS_SSL_PTR \- get TLS session info
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SSL_PTR,
|
||||||
|
struct curl_tlssessioninfo **session);
|
||||||
|
|
||||||
|
/* if you need compatibility with libcurl < 7.48.0 use
|
||||||
|
CURLINFO_TLS_SESSION instead: */
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TLS_SESSION,
|
||||||
|
struct curl_tlssessioninfo **session);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a \fIstruct curl_tlssessioninfo \fP*. The pointer is initialized
|
||||||
|
to refer to a \fIstruct curl_tlssessioninfo \fP* that contains an enum indicating
|
||||||
|
the SSL library used for the handshake and a pointer to the respective
|
||||||
|
internal TLS session structure of this underlying SSL library.
|
||||||
|
|
||||||
|
This option may be useful for example to extract certificate information in a
|
||||||
|
format convenient for further processing, such as manual validation. Refer to
|
||||||
|
the \fBLIMITATIONS\fP section.
|
||||||
|
|
||||||
|
.nf
|
||||||
|
struct curl_tlssessioninfo {
|
||||||
|
curl_sslbackend backend;
|
||||||
|
void *internals;
|
||||||
|
};
|
||||||
|
.fi
|
||||||
|
|
||||||
|
The \fIbackend\fP struct member is one of the defines in the CURLSSLBACKEND_*
|
||||||
|
series: CURLSSLBACKEND_NONE (when built without TLS support),
|
||||||
|
CURLSSLBACKEND_WOLFSSL, CURLSSLBACKEND_SECURETRANSPORT, CURLSSLBACKEND_GNUTLS,
|
||||||
|
CURLSSLBACKEND_MBEDTLS, CURLSSLBACKEND_NSS, CURLSSLBACKEND_OPENSSL,
|
||||||
|
CURLSSLBACKEND_SCHANNEL or CURLSSLBACKEND_MESALINK. (Note that the OpenSSL
|
||||||
|
forks are all reported as just OpenSSL here.)
|
||||||
|
|
||||||
|
The \fIinternals\fP struct member points to a TLS library specific pointer for
|
||||||
|
the active ("in use") SSL connection, with the following underlying types:
|
||||||
|
.IP GnuTLS
|
||||||
|
\fBgnutls_session_t\fP
|
||||||
|
.IP NSS
|
||||||
|
\fBPRFileDesc \fP*
|
||||||
|
.IP OpenSSL
|
||||||
|
\fICURLINFO_TLS_SESSION(3)\fP: \fBSSL_CTX \fP*
|
||||||
|
|
||||||
|
\fICURLINFO_TLS_SSL_PTR(3)\fP: \fBSSL \fP*
|
||||||
|
Since 7.48.0 the \fIinternals\fP member can point to these other SSL backends
|
||||||
|
as well:
|
||||||
|
.IP mbedTLS
|
||||||
|
\fBmbedTLS_ssl_context \fP*
|
||||||
|
.IP "Secure Channel"
|
||||||
|
\fBCtxtHandle \fP*
|
||||||
|
.IP "Secure Transport"
|
||||||
|
\fBSSLContext \fP*
|
||||||
|
.IP wolfSSL
|
||||||
|
\fBSSL \fP*
|
||||||
|
|
||||||
|
If the \fIinternals\fP pointer is NULL then either the SSL backend is not
|
||||||
|
supported, an SSL session has not yet been established or the connection is no
|
||||||
|
longer associated with the easy handle (e.g. \fIcurl_easy_perform(3)\fP has
|
||||||
|
returned).
|
||||||
|
.SH LIMITATIONS
|
||||||
|
This option has some limitations that could make it unsafe when it comes to
|
||||||
|
the manual verification of certificates.
|
||||||
|
|
||||||
|
This option only retrieves the first in\-use SSL session pointer for your easy
|
||||||
|
handle, however your easy handle may have more than one in\-use SSL session if
|
||||||
|
using FTP over SSL. That is because the FTP protocol has a control channel and
|
||||||
|
a data channel and one or both may be over SSL. Currently there is no way to
|
||||||
|
retrieve a second in\-use SSL session associated with an easy handle.
|
||||||
|
|
||||||
|
This option has not been thoroughly tested with clear text protocols that can
|
||||||
|
be upgraded/downgraded to/from SSL: FTP, SMTP, POP3, IMAP when used with
|
||||||
|
\fICURLOPT_USE_SSL(3)\fP. Though you can to retrieve the SSL pointer, it is possible
|
||||||
|
that before you can do that, data (including auth) may have already been sent
|
||||||
|
over a connection after it was upgraded.
|
||||||
|
|
||||||
|
Renegotiation. If unsafe renegotiation or renegotiation in a way that the
|
||||||
|
certificate is allowed to change is allowed by your SSL library this may occur
|
||||||
|
and the certificate may change, and data may continue to be sent or received
|
||||||
|
after renegotiation but before you are able to get the (possibly) changed SSL
|
||||||
|
pointer, with the (possibly) changed certificate information.
|
||||||
|
|
||||||
|
Instead of using this option to poll for certificate changes use
|
||||||
|
\fICURLOPT_SSL_CTX_FUNCTION(3)\fP to set a verification callback, if supported.
|
||||||
|
That is safer and does not suffer from any of the problems above.
|
||||||
|
|
||||||
|
How are you using this option? Are you affected by any of these limitations?
|
||||||
|
Please let us know by making a comment at
|
||||||
|
https://github.com/curl/curl/issues/685
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All TLS\-based
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
#include <openssl/ssl.h>
|
||||||
|
|
||||||
|
CURL *curl;
|
||||||
|
static size_t wf(void *ptr, size_t size, size_t nmemb, void *stream)
|
||||||
|
{
|
||||||
|
const struct curl_tlssessioninfo *info = NULL;
|
||||||
|
CURLcode res = curl_easy_getinfo(curl, CURLINFO_TLS_SSL_PTR, &info);
|
||||||
|
if(info && !res) {
|
||||||
|
if(CURLSSLBACKEND_OPENSSL == info->backend) {
|
||||||
|
printf("OpenSSL ver. %s\\n", SSL_get_version((SSL*)info->internals));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return size * nmemb;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
CURLcode res;
|
||||||
|
curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, wf);
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.48.0.
|
||||||
|
|
||||||
|
This option supersedes \fICURLINFO_TLS_SESSION(3)\fP which was added in 7.34.0.
|
||||||
|
This option is exactly the same as that option except in the case of OpenSSL.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_TLS_SESSION (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
50
core/curl/files/CURLINFO_TOTAL_TIME.3
Normal file
50
core/curl/files/CURLINFO_TOTAL_TIME.3
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_TOTAL_TIME.md
|
||||||
|
.TH CURLINFO_TOTAL_TIME 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_TOTAL_TIME \- get total time of previous transfer
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME, double *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a double to receive the total time in seconds for the
|
||||||
|
previous transfer, including name resolving, TCP connect etc. The double
|
||||||
|
represents the time in seconds, including fractions.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
double total;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &total);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %.1f", total);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.4.1
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_TOTAL_TIME_T (3),
|
||||||
|
.BR CURLOPT_TIMEOUT (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
52
core/curl/files/CURLINFO_TOTAL_TIME_T.3
Normal file
52
core/curl/files/CURLINFO_TOTAL_TIME_T.3
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_TOTAL_TIME_T.md
|
||||||
|
.TH CURLINFO_TOTAL_TIME_T 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_TOTAL_TIME_T \- get total time of previous transfer in microseconds
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_TOTAL_TIME_T,
|
||||||
|
curl_off_t *timep);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a curl_off_t to receive the total time in microseconds
|
||||||
|
for the previous transfer, including name resolving, TCP connect etc.
|
||||||
|
The curl_off_t represents the time in microseconds.
|
||||||
|
|
||||||
|
When a redirect is followed, the time from each request is added together.
|
||||||
|
|
||||||
|
See also the TIMES overview in the \fIcurl_easy_getinfo(3)\fP man page.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_off_t total;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME_T, &total);
|
||||||
|
if(CURLE_OK == res) {
|
||||||
|
printf("Time: %" CURL_FORMAT_CURL_OFF_T ".%06ld", total / 1000000,
|
||||||
|
(long)(total % 1000000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* always cleanup */
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.61.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_TOTAL_TIME (3),
|
||||||
|
.BR CURLOPT_TIMEOUT (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
51
core/curl/files/CURLINFO_XFER_ID.3
Normal file
51
core/curl/files/CURLINFO_XFER_ID.3
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLINFO_XFER_ID.md
|
||||||
|
.TH CURLINFO_XFER_ID 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLINFO_XFER_ID \- get the ID of a transfer
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_XFER_ID,
|
||||||
|
curl_off_t *xfer_id);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to a \fIcurl_off_t\fP to receive the identifier of the
|
||||||
|
current/last transfer done with the handle. Stores \-1 if no transfer
|
||||||
|
has been started yet for the handle.
|
||||||
|
|
||||||
|
The transfer id is unique among all transfers performed using the same
|
||||||
|
connection cache. This is implicitly the case for all transfers in the
|
||||||
|
same multi handle.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
if(!res) {
|
||||||
|
curl_off_t xfer_id;
|
||||||
|
res = curl_easy_getinfo(curl, CURLINFO_XFER_ID, &xfer_id);
|
||||||
|
if(!res) {
|
||||||
|
printf("Transfer ID: %" CURL_FORMAT_CURL_OFF_T "\\n", xfer_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 8.2.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CONN_ID (3),
|
||||||
|
.BR curl_easy_getinfo (3),
|
||||||
|
.BR curl_easy_setopt (3)
|
40
core/curl/files/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
Normal file
40
core/curl/files/CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.3
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE.md
|
||||||
|
.TH CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE \- chunk length threshold for pipelining
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE,
|
||||||
|
long size);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
No function since pipelining was removed in 7.62.0.
|
||||||
|
|
||||||
|
Pass a long with a \fBsize\fP in bytes. If a transfer in a pipeline is
|
||||||
|
currently processing a chunked (Transfer\-encoding: chunked) request with a
|
||||||
|
current chunk length larger than \fICURLMOPT_CHUNK_LENGTH_PENALTY_SIZE(3)\fP,
|
||||||
|
that pipeline is not considered for additional requests, even if it is shorter
|
||||||
|
than \fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP.
|
||||||
|
.SH DEFAULT
|
||||||
|
The default value is 0, which means that the penalization is inactive.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURLM *m = curl_multi_init();
|
||||||
|
long maxchunk = 10000;
|
||||||
|
curl_multi_setopt(m, CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, maxchunk);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.30.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE (3),
|
||||||
|
.BR CURLMOPT_MAX_PIPELINE_LENGTH (3),
|
||||||
|
.BR CURLMOPT_PIPELINING (3)
|
39
core/curl/files/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
Normal file
39
core/curl/files/CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.3
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE.md
|
||||||
|
.TH CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE \- size threshold for pipelining penalty
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE,
|
||||||
|
long size);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
No function since pipelining was removed in 7.62.0.
|
||||||
|
|
||||||
|
Pass a long with a \fBsize\fP in bytes. If a transfer in a pipeline is
|
||||||
|
currently processing a request with a Content\-Length larger than this
|
||||||
|
\fICURLMOPT_CONTENT_LENGTH_PENALTY_SIZE(3)\fP, that pipeline is not considered
|
||||||
|
for additional requests, even if it is shorter than
|
||||||
|
\fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP.
|
||||||
|
.SH DEFAULT
|
||||||
|
The default value is 0, which means that the size penalization is inactive.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURLM *m = curl_multi_init();
|
||||||
|
long maxlength = 10000;
|
||||||
|
curl_multi_setopt(m, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, maxlength);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.30.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE (3),
|
||||||
|
.BR CURLMOPT_PIPELINING (3)
|
48
core/curl/files/CURLMOPT_MAXCONNECTS.3
Normal file
48
core/curl/files/CURLMOPT_MAXCONNECTS.3
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_MAXCONNECTS.md
|
||||||
|
.TH CURLMOPT_MAXCONNECTS 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_MAXCONNECTS \- size of connection cache
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAXCONNECTS, long max);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a long indicating the \fBmax\fP. The set number is used as the maximum
|
||||||
|
amount of simultaneously open connections that libcurl may keep in its
|
||||||
|
connection cache after completed use. By default libcurl enlarges the size for
|
||||||
|
each added easy handle to make it fit 4 times the number of added easy
|
||||||
|
handles.
|
||||||
|
|
||||||
|
By setting this option, you can prevent the cache size from growing beyond the
|
||||||
|
limit set by you.
|
||||||
|
|
||||||
|
When the cache is full, curl closes the oldest one in the cache to prevent the
|
||||||
|
number of open connections from increasing.
|
||||||
|
|
||||||
|
This option is for the multi handle\(aqs use only, when using the easy interface
|
||||||
|
you should instead use the \fICURLOPT_MAXCONNECTS(3)\fP option.
|
||||||
|
|
||||||
|
See \fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP for limiting the number of active
|
||||||
|
connections.
|
||||||
|
.SH DEFAULT
|
||||||
|
See DESCRIPTION
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURLM *m = curl_multi_init();
|
||||||
|
/* only keep 10 connections in the cache */
|
||||||
|
curl_multi_setopt(m, CURLMOPT_MAXCONNECTS, 10L);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.16.3
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_MAX_HOST_CONNECTIONS (3),
|
||||||
|
.BR CURLOPT_MAXCONNECTS (3)
|
38
core/curl/files/CURLMOPT_MAX_CONCURRENT_STREAMS.3
Normal file
38
core/curl/files/CURLMOPT_MAX_CONCURRENT_STREAMS.3
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_MAX_CONCURRENT_STREAMS.md
|
||||||
|
.TH CURLMOPT_MAX_CONCURRENT_STREAMS 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_MAX_CONCURRENT_STREAMS \- max concurrent streams for http2
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_CONCURRENT_STREAMS,
|
||||||
|
long max);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a long indicating the \fBmax\fP. The set number is used as the maximum
|
||||||
|
number of concurrent streams libcurl should support on connections done using
|
||||||
|
HTTP/2 or HTTP/3.
|
||||||
|
|
||||||
|
Valid values range from 1 to 2147483647 (2^31 \- 1) and defaults to 100. The
|
||||||
|
value passed here would be honored based on other system resources properties.
|
||||||
|
.SH DEFAULT
|
||||||
|
100
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURLM *m = curl_multi_init();
|
||||||
|
/* max concurrent streams 200 */
|
||||||
|
curl_multi_setopt(m, CURLMOPT_MAX_CONCURRENT_STREAMS, 200L);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.67.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_MAXCONNECTS (3),
|
||||||
|
.BR CURLOPT_MAXCONNECTS (3)
|
51
core/curl/files/CURLMOPT_MAX_HOST_CONNECTIONS.3
Normal file
51
core/curl/files/CURLMOPT_MAX_HOST_CONNECTIONS.3
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_MAX_HOST_CONNECTIONS.md
|
||||||
|
.TH CURLMOPT_MAX_HOST_CONNECTIONS 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_MAX_HOST_CONNECTIONS \- max number of connections to a single host
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_HOST_CONNECTIONS,
|
||||||
|
long max);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a long to indicate \fBmax\fP. The set number is used as the maximum amount
|
||||||
|
of simultaneously open connections to a single host (a host being the same as
|
||||||
|
a hostname + port number pair). For each new session to a host, libcurl might
|
||||||
|
open a new connection up to the limit set by
|
||||||
|
\fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP. When the limit is reached, new sessions are
|
||||||
|
kept pending until a connection becomes available.
|
||||||
|
|
||||||
|
The default \fBmax\fP value is 0, unlimited. This set limit is also used for
|
||||||
|
proxy connections, and then the proxy is considered to be the host for which
|
||||||
|
this limit counts.
|
||||||
|
|
||||||
|
When more transfers are added to the multi handle than what can be performed
|
||||||
|
due to the set limit, they are queued up waiting for their chance. When that
|
||||||
|
happens, the \fICURLOPT_TIMEOUT_MS(3)\fP timeout is inclusive of the waiting
|
||||||
|
time, meaning that if you set a too narrow timeout in such a case the transfer
|
||||||
|
might never even start before it times out.
|
||||||
|
|
||||||
|
Even in the queued up situation, the \fICURLOPT_CONNECTTIMEOUT_MS(3)\fP
|
||||||
|
timeout is however treated as a per\-connect timeout.
|
||||||
|
.SH DEFAULT
|
||||||
|
0
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURLM *m = curl_multi_init();
|
||||||
|
/* do no more than 2 connections per host */
|
||||||
|
curl_multi_setopt(m, CURLMOPT_MAX_HOST_CONNECTIONS, 2L);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.30.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_MAXCONNECTS (3),
|
||||||
|
.BR CURLMOPT_MAX_TOTAL_CONNECTIONS (3)
|
44
core/curl/files/CURLMOPT_MAX_PIPELINE_LENGTH.3
Normal file
44
core/curl/files/CURLMOPT_MAX_PIPELINE_LENGTH.3
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_MAX_PIPELINE_LENGTH.md
|
||||||
|
.TH CURLMOPT_MAX_PIPELINE_LENGTH 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_MAX_PIPELINE_LENGTH \- maximum number of requests in a pipeline
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_PIPELINE_LENGTH,
|
||||||
|
long max);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
No function since pipelining was removed in 7.62.0.
|
||||||
|
|
||||||
|
Pass a long. The set \fBmax\fP number is used as the maximum amount of
|
||||||
|
outstanding requests in an HTTP/1.1 pipeline. This option is only used for
|
||||||
|
HTTP/1.1 pipelining, not for HTTP/2 multiplexing.
|
||||||
|
|
||||||
|
When this limit is reached, libcurl creates another connection to the same
|
||||||
|
host (see \fICURLMOPT_MAX_HOST_CONNECTIONS(3)\fP), or queue the request until one
|
||||||
|
.nf
|
||||||
|
of the pipelines to the host is ready to accept a request. Thus, the total
|
||||||
|
.fi
|
||||||
|
\fICURLMOPT_MAX_PIPELINE_LENGTH(3)\fP.
|
||||||
|
.SH DEFAULT
|
||||||
|
5
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURLM *m = curl_multi_init();
|
||||||
|
/* set a more conservative pipe length */
|
||||||
|
curl_multi_setopt(m, CURLMOPT_MAX_PIPELINE_LENGTH, 3L);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.30.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_MAX_HOST_CONNECTIONS (3),
|
||||||
|
.BR CURLMOPT_PIPELINING (3)
|
49
core/curl/files/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
Normal file
49
core/curl/files/CURLMOPT_MAX_TOTAL_CONNECTIONS.3
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_MAX_TOTAL_CONNECTIONS.md
|
||||||
|
.TH CURLMOPT_MAX_TOTAL_CONNECTIONS 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_MAX_TOTAL_CONNECTIONS \- max simultaneously open connections
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_MAX_TOTAL_CONNECTIONS,
|
||||||
|
long amount);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a long for the \fBamount\fP. The set number is used as the maximum number
|
||||||
|
of simultaneously open connections in total using this multi handle. For each
|
||||||
|
new session, libcurl might open a new connection up to the limit set by
|
||||||
|
\fICURLMOPT_MAX_TOTAL_CONNECTIONS(3)\fP. When the limit is reached, new
|
||||||
|
sessions are held pending until there are available connections. If
|
||||||
|
\fICURLMOPT_PIPELINING(3)\fP is enabled, libcurl can try multiplexing if the
|
||||||
|
host is capable of it.
|
||||||
|
|
||||||
|
When more transfers are added to the multi handle than what can be performed
|
||||||
|
due to the set limit, they get queued up waiting for their chance. When that
|
||||||
|
happens, the \fICURLOPT_TIMEOUT_MS(3)\fP timeout is counted inclusive of the
|
||||||
|
waiting time, meaning that if you set a too narrow timeout in such a case the
|
||||||
|
transfer might never even start before it times out.
|
||||||
|
|
||||||
|
Even in the queued up situation, the \fICURLOPT_CONNECTTIMEOUT_MS(3)\fP
|
||||||
|
timeout is however treated as a per\-connect timeout.
|
||||||
|
.SH DEFAULT
|
||||||
|
The default value is 0, which means that there is no limit. It is then simply
|
||||||
|
controlled by the number of easy handles added.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURLM *m = curl_multi_init();
|
||||||
|
/* never do more than 15 connections */
|
||||||
|
curl_multi_setopt(m, CURLMOPT_MAX_TOTAL_CONNECTIONS, 15L);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.30.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_MAXCONNECTS (3),
|
||||||
|
.BR CURLMOPT_MAX_HOST_CONNECTIONS (3)
|
50
core/curl/files/CURLMOPT_PIPELINING.3
Normal file
50
core/curl/files/CURLMOPT_PIPELINING.3
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_PIPELINING.md
|
||||||
|
.TH CURLMOPT_PIPELINING 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_PIPELINING \- enable HTTP pipelining and multiplexing
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING, long bitmask);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass in the correct value in the \fBbitmask\fP parameter to instruct libcurl
|
||||||
|
to enable multiplexing for this multi handle.
|
||||||
|
|
||||||
|
With multiplexing enabled, libcurl attempts to do multiple transfers over the
|
||||||
|
same connection when doing parallel transfers to the same hosts.
|
||||||
|
.IP "CURLPIPE_NOTHING (0)"
|
||||||
|
Default, which means doing no attempts at multiplexing.
|
||||||
|
.IP "CURLPIPE_HTTP1 (1)"
|
||||||
|
This bit is deprecated and has no effect since version 7.62.0.
|
||||||
|
.IP "CURLPIPE_MULTIPLEX (2)"
|
||||||
|
If this bit is set, libcurl tries to multiplex the new transfer over an
|
||||||
|
existing connection if possible. This requires HTTP/2 or HTTP/3.
|
||||||
|
.SH DEFAULT
|
||||||
|
Since 7.62.0, \fBCURLPIPE_MULTIPLEX\fP is enabled by default.
|
||||||
|
|
||||||
|
Before that, default was \fBCURLPIPE_NOTHING\fP.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURLM *m = curl_multi_init();
|
||||||
|
/* try HTTP/2 multiplexing */
|
||||||
|
curl_multi_setopt(m, CURLMOPT_PIPELINING, CURLPIPE_MULTIPLEX);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.16.0. Multiplex support bit added in 7.43.0. HTTP/1 Pipelining
|
||||||
|
support was disabled in 7.62.0.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE (3),
|
||||||
|
.BR CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE (3),
|
||||||
|
.BR CURLMOPT_MAXCONNECTS (3),
|
||||||
|
.BR CURLMOPT_MAX_HOST_CONNECTIONS (3),
|
||||||
|
.BR CURLMOPT_MAX_PIPELINE_LENGTH (3),
|
||||||
|
.BR CURLMOPT_PIPELINING_SITE_BL (3)
|
48
core/curl/files/CURLMOPT_PIPELINING_SERVER_BL.3
Normal file
48
core/curl/files/CURLMOPT_PIPELINING_SERVER_BL.3
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_PIPELINING_SERVER_BL.md
|
||||||
|
.TH CURLMOPT_PIPELINING_SERVER_BL 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_PIPELINING_SERVER_BL \- pipelining server block list
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SERVER_BL,
|
||||||
|
char **servers);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
No function since pipelining was removed in 7.62.0.
|
||||||
|
|
||||||
|
Pass a \fBservers\fP array of char *, ending with a NULL entry. This is a list
|
||||||
|
of server types prefixes (in the Server: HTTP header) that are blocked from
|
||||||
|
pipelining, i.e server types that are known to not support HTTP
|
||||||
|
pipelining. The array is copied by libcurl.
|
||||||
|
|
||||||
|
Note that the comparison matches if the Server: header begins with the string
|
||||||
|
in the block list, i.e "Server: Ninja 1.2.3" and "Server: Ninja 1.4.0" can
|
||||||
|
both be blocked by having "Ninja" in the list.
|
||||||
|
|
||||||
|
Pass a NULL pointer to clear the block list.
|
||||||
|
.SH DEFAULT
|
||||||
|
The default value is NULL, which means that there is no block list.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
static char *server_block_list[] =
|
||||||
|
{
|
||||||
|
"Microsoft-IIS/6.0",
|
||||||
|
"nginx/0.8.54",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURLM *m = curl_multi_init();
|
||||||
|
curl_multi_setopt(m, CURLMOPT_PIPELINING_SERVER_BL, server_block_list);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.30.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_PIPELINING (3),
|
||||||
|
.BR CURLMOPT_PIPELINING_SITE_BL (3)
|
45
core/curl/files/CURLMOPT_PIPELINING_SITE_BL.3
Normal file
45
core/curl/files/CURLMOPT_PIPELINING_SITE_BL.3
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_PIPELINING_SITE_BL.md
|
||||||
|
.TH CURLMOPT_PIPELINING_SITE_BL 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_PIPELINING_SITE_BL \- pipelining host block list
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PIPELINING_SITE_BL,
|
||||||
|
char **hosts);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
No function since pipelining was removed in 7.62.0.
|
||||||
|
|
||||||
|
Pass a \fBhosts\fP array of char *, ending with a NULL entry. This is a list
|
||||||
|
of sites that are blocked from pipelining, i.e sites that are known to not
|
||||||
|
support HTTP pipelining. The array is copied by libcurl.
|
||||||
|
|
||||||
|
Pass a NULL pointer to clear the block list.
|
||||||
|
.SH DEFAULT
|
||||||
|
The default value is NULL, which means that there is no block list.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
static char *site_block_list[] =
|
||||||
|
{
|
||||||
|
"www.haxx.se",
|
||||||
|
"www.example.com:1234",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURLM *m = curl_multi_init();
|
||||||
|
curl_multi_setopt(m, CURLMOPT_PIPELINING_SITE_BL, site_block_list);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.30.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_PIPELINING (3),
|
||||||
|
.BR CURLMOPT_PIPELINING_SERVER_BL (3)
|
66
core/curl/files/CURLMOPT_PUSHDATA.3
Normal file
66
core/curl/files/CURLMOPT_PUSHDATA.3
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_PUSHDATA.md
|
||||||
|
.TH CURLMOPT_PUSHDATA 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_PUSHDATA \- pointer to pass to push callback
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHDATA, void *pointer);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Set a \fIpointer\fP to pass as the last argument to the
|
||||||
|
\fICURLMOPT_PUSHFUNCTION(3)\fP callback. The pointer is not touched or used by
|
||||||
|
libcurl itself, only passed on to the callback function.
|
||||||
|
.SH DEFAULT
|
||||||
|
NULL
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* only allow pushes for file names starting with "push-" */
|
||||||
|
int push_callback(CURL *parent,
|
||||||
|
CURL *easy,
|
||||||
|
size_t num_headers,
|
||||||
|
struct curl_pushheaders *headers,
|
||||||
|
void *clientp)
|
||||||
|
{
|
||||||
|
char *headp;
|
||||||
|
int *transfers = (int *)clientp;
|
||||||
|
FILE *out;
|
||||||
|
headp = curl_pushheader_byname(headers, ":path");
|
||||||
|
if(headp && !strncmp(headp, "/push-", 6)) {
|
||||||
|
fprintf(stderr, "The PATH is %s\\n", headp);
|
||||||
|
|
||||||
|
/* save the push here */
|
||||||
|
out = fopen("pushed-stream", "wb");
|
||||||
|
|
||||||
|
/* write to this file */
|
||||||
|
curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
|
||||||
|
|
||||||
|
(*transfers)++; /* one more */
|
||||||
|
|
||||||
|
return CURL_PUSH_OK;
|
||||||
|
}
|
||||||
|
return CURL_PUSH_DENY;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
int counter;
|
||||||
|
CURLM *multi = curl_multi_init();
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback);
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.44.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_PIPELINING (3),
|
||||||
|
.BR CURLMOPT_PUSHFUNCTION (3),
|
||||||
|
.BR CURLOPT_PIPEWAIT (3),
|
||||||
|
.BR RFC 7540
|
116
core/curl/files/CURLMOPT_PUSHFUNCTION.3
Normal file
116
core/curl/files/CURLMOPT_PUSHFUNCTION.3
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_PUSHFUNCTION.md
|
||||||
|
.TH CURLMOPT_PUSHFUNCTION 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_PUSHFUNCTION \- callback that approves or denies server pushes
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
int curl_push_callback(CURL *parent,
|
||||||
|
CURL *easy,
|
||||||
|
size_t num_headers,
|
||||||
|
struct curl_pushheaders *headers,
|
||||||
|
void *clientp);
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_PUSHFUNCTION,
|
||||||
|
curl_push_callback func);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
This callback gets called when a new HTTP/2 stream is being pushed by the
|
||||||
|
server (using the PUSH_PROMISE frame). If no push callback is set, all offered
|
||||||
|
pushes are denied automatically.
|
||||||
|
.SH CALLBACK DESCRIPTION
|
||||||
|
The callback gets its arguments like this:
|
||||||
|
|
||||||
|
\fIparent\fP is the handle of the stream on which this push arrives. The new
|
||||||
|
handle has been duplicated from the parent, meaning that it has gotten all its
|
||||||
|
options inherited. It is then up to the application to alter any options if
|
||||||
|
desired.
|
||||||
|
|
||||||
|
\fIeasy\fP is a newly created handle that represents this upcoming transfer.
|
||||||
|
|
||||||
|
\fInum_headers\fP is the number of name+value pairs that was received and can
|
||||||
|
be accessed
|
||||||
|
|
||||||
|
\fIheaders\fP is a handle used to access push headers using the accessor
|
||||||
|
functions described below. This only accesses and provides the PUSH_PROMISE
|
||||||
|
headers, the normal response headers are provided in the header callback as
|
||||||
|
usual.
|
||||||
|
|
||||||
|
\fIclientp\fP is the pointer set with \fICURLMOPT_PUSHDATA(3)\fP
|
||||||
|
|
||||||
|
If the callback returns CURL_PUSH_OK, the new easy handle is added to the
|
||||||
|
multi handle, the callback must not do that by itself.
|
||||||
|
|
||||||
|
The callback can access PUSH_PROMISE headers with two accessor
|
||||||
|
functions. These functions can only be used from within this callback and they
|
||||||
|
can only access the PUSH_PROMISE headers: \fIcurl_pushheader_byname(3)\fP and
|
||||||
|
\fIcurl_pushheader_bynum(3)\fP. The normal response headers are passed to the
|
||||||
|
header callback for pushed streams just as for normal streams.
|
||||||
|
|
||||||
|
The header fields can also be accessed with \fIcurl_easy_header(3)\fP,
|
||||||
|
introduced in later libcurl versions.
|
||||||
|
.SH CALLBACK RETURN VALUE
|
||||||
|
.IP "CURL_PUSH_OK (0)"
|
||||||
|
The application has accepted the stream and it can now start receiving data,
|
||||||
|
the ownership of the CURL handle has been taken over by the application.
|
||||||
|
.IP "CURL_PUSH_DENY (1)"
|
||||||
|
The callback denies the stream and no data reaches the application, the easy
|
||||||
|
handle is destroyed by libcurl.
|
||||||
|
.IP "CURL_PUSH_ERROROUT (2)"
|
||||||
|
Returning this code rejects the pushed stream and returns an error back on the
|
||||||
|
parent stream making it get closed with an error. (Added in 7.72.0)
|
||||||
|
.IP *
|
||||||
|
All other return codes are reserved for future use.
|
||||||
|
.SH DEFAULT
|
||||||
|
NULL, no callback
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP(S) (HTTP/2 only)
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* only allow pushes for file names starting with "push-" */
|
||||||
|
int push_callback(CURL *parent,
|
||||||
|
CURL *easy,
|
||||||
|
size_t num_headers,
|
||||||
|
struct curl_pushheaders *headers,
|
||||||
|
void *clientp)
|
||||||
|
{
|
||||||
|
char *headp;
|
||||||
|
int *transfers = (int *)clientp;
|
||||||
|
FILE *out;
|
||||||
|
headp = curl_pushheader_byname(headers, ":path");
|
||||||
|
if(headp && !strncmp(headp, "/push-", 6)) {
|
||||||
|
fprintf(stderr, "The PATH is %s\\n", headp);
|
||||||
|
|
||||||
|
/* save the push here */
|
||||||
|
out = fopen("pushed-stream", "wb");
|
||||||
|
|
||||||
|
/* write to this file */
|
||||||
|
curl_easy_setopt(easy, CURLOPT_WRITEDATA, out);
|
||||||
|
|
||||||
|
(*transfers)++; /* one more */
|
||||||
|
|
||||||
|
return CURL_PUSH_OK;
|
||||||
|
}
|
||||||
|
return CURL_PUSH_DENY;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
int counter;
|
||||||
|
CURLM *multi = curl_multi_init();
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_PUSHFUNCTION, push_callback);
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_PUSHDATA, &counter);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.44.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_PIPELINING (3),
|
||||||
|
.BR CURLMOPT_PUSHDATA (3),
|
||||||
|
.BR CURLOPT_PIPEWAIT (3),
|
||||||
|
.BR RFC 7540
|
61
core/curl/files/CURLMOPT_SOCKETDATA.3
Normal file
61
core/curl/files/CURLMOPT_SOCKETDATA.3
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_SOCKETDATA.md
|
||||||
|
.TH CURLMOPT_SOCKETDATA 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_SOCKETDATA \- custom pointer passed to the socket callback
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETDATA, void *pointer);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
A data \fIpointer\fP to pass to the socket callback set with the
|
||||||
|
\fICURLMOPT_SOCKETFUNCTION(3)\fP option.
|
||||||
|
|
||||||
|
This pointer is not touched by libcurl but is only passed in as the socket
|
||||||
|
callbacks\(aqs \fBclientp\fP argument.
|
||||||
|
.SH DEFAULT
|
||||||
|
NULL
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
struct priv {
|
||||||
|
void *ours;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
|
||||||
|
{
|
||||||
|
struct priv *p = sockp;
|
||||||
|
printf("my ptr: %p\\n", p->ours);
|
||||||
|
|
||||||
|
if(what == CURL_POLL_REMOVE) {
|
||||||
|
/* remove the socket from our collection */
|
||||||
|
}
|
||||||
|
if(what & CURL_POLL_IN) {
|
||||||
|
/* wait for read on this socket */
|
||||||
|
}
|
||||||
|
if(what & CURL_POLL_OUT) {
|
||||||
|
/* wait for write on this socket */
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
struct priv setup;
|
||||||
|
CURLM *multi = curl_multi_init();
|
||||||
|
/* ... use socket callback and custom pointer */
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, &setup);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.15.4
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_SOCKETFUNCTION (3),
|
||||||
|
.BR CURLMOPT_TIMERFUNCTION (3),
|
||||||
|
.BR curl_multi_socket_action (3)
|
104
core/curl/files/CURLMOPT_SOCKETFUNCTION.3
Normal file
104
core/curl/files/CURLMOPT_SOCKETFUNCTION.3
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_SOCKETFUNCTION.md
|
||||||
|
.TH CURLMOPT_SOCKETFUNCTION 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_SOCKETFUNCTION \- callback informed about what to wait for
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
int socket_callback(CURL *easy, /* easy handle */
|
||||||
|
curl_socket_t s, /* socket */
|
||||||
|
int what, /* describes the socket */
|
||||||
|
void *clientp, /* private callback pointer */
|
||||||
|
void *socketp); /* private socket pointer */
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_SOCKETFUNCTION, socket_callback);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to your callback function, which should match the prototype
|
||||||
|
shown above.
|
||||||
|
|
||||||
|
When the \fIcurl_multi_socket_action(3)\fP function is called, it uses this
|
||||||
|
callback to inform the application about updates in the socket (file
|
||||||
|
descriptor) status by doing none, one, or multiple calls to the
|
||||||
|
\fBsocket_callback\fP. The callback function gets status updates with changes
|
||||||
|
since the previous time the callback was called. If the given callback pointer
|
||||||
|
is set to NULL, no callback is called.
|
||||||
|
|
||||||
|
libcurl then expects the application to monitor the sockets for the specific
|
||||||
|
activities and tell libcurl again when something happens on one of them. Tell
|
||||||
|
libcurl by calling \fIcurl_multi_socket_action(3)\fP.
|
||||||
|
.SH CALLBACK ARGUMENTS
|
||||||
|
\fIeasy\fP identifies the specific transfer for which this update is related.
|
||||||
|
|
||||||
|
\fIs\fP is the specific socket this function invocation concerns. If the
|
||||||
|
\fBwhat\fP argument is not CURL_POLL_REMOVE then it holds information about
|
||||||
|
what activity on this socket the application is supposed to
|
||||||
|
monitor. Subsequent calls to this callback might update the \fBwhat\fP bits
|
||||||
|
for a socket that is already monitored.
|
||||||
|
|
||||||
|
The socket callback should return 0 on success, and \-1 on error. If this
|
||||||
|
callback returns error, \fBall\fP transfers currently in progress in this
|
||||||
|
multi handle are aborted and made to fail.
|
||||||
|
|
||||||
|
\fBclientp\fP is set with \fICURLMOPT_SOCKETDATA(3)\fP.
|
||||||
|
|
||||||
|
\fBsocketp\fP is set with \fIcurl_multi_assign(3)\fP or NULL.
|
||||||
|
|
||||||
|
The \fBwhat\fP parameter informs the callback on the status of the given
|
||||||
|
socket. It can hold one of these values:
|
||||||
|
.IP CURL_POLL_IN
|
||||||
|
Wait for incoming data. For the socket to become readable.
|
||||||
|
.IP CURL_POLL_OUT
|
||||||
|
Wait for outgoing data. For the socket to become writable.
|
||||||
|
.IP CURL_POLL_INOUT
|
||||||
|
Wait for incoming and outgoing data. For the socket to become readable or
|
||||||
|
writable.
|
||||||
|
.IP CURL_POLL_REMOVE
|
||||||
|
The specified socket/file descriptor is no longer used by libcurl for any
|
||||||
|
active transfer. It might soon be added again.
|
||||||
|
.SH DEFAULT
|
||||||
|
NULL (no callback)
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
struct priv {
|
||||||
|
void *ours;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int sock_cb(CURL *e, curl_socket_t s, int what, void *cbp, void *sockp)
|
||||||
|
{
|
||||||
|
struct priv *p = sockp;
|
||||||
|
printf("our ptr: %p\\n", p->ours);
|
||||||
|
|
||||||
|
if(what == CURL_POLL_REMOVE) {
|
||||||
|
/* remove the socket from our collection */
|
||||||
|
}
|
||||||
|
if(what & CURL_POLL_IN) {
|
||||||
|
/* wait for read on this socket */
|
||||||
|
}
|
||||||
|
if(what & CURL_POLL_OUT) {
|
||||||
|
/* wait for write on this socket */
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
struct priv setup;
|
||||||
|
CURLM *multi = curl_multi_init();
|
||||||
|
/* ... use socket callback and custom pointer */
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_SOCKETFUNCTION, sock_cb);
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_SOCKETDATA, &setup);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.15.4
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_SOCKETDATA (3),
|
||||||
|
.BR CURLMOPT_TIMERFUNCTION (3),
|
||||||
|
.BR curl_multi_socket_action (3)
|
54
core/curl/files/CURLMOPT_TIMERDATA.3
Normal file
54
core/curl/files/CURLMOPT_TIMERDATA.3
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_TIMERDATA.md
|
||||||
|
.TH CURLMOPT_TIMERDATA 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_TIMERDATA \- custom pointer to pass to timer callback
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERDATA, void *pointer);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
A data \fBpointer\fP to pass to the timer callback set with the
|
||||||
|
\fICURLMOPT_TIMERFUNCTION(3)\fP option.
|
||||||
|
|
||||||
|
This pointer is not touched by libcurl but is only be passed in to the timer
|
||||||
|
callbacks\(aqs \fBclientp\fP argument.
|
||||||
|
.SH DEFAULT
|
||||||
|
NULL
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
struct priv {
|
||||||
|
void *custom;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int timerfunc(CURLM *multi, long timeout_ms, void *clientp)
|
||||||
|
{
|
||||||
|
struct priv *mydata = clientp;
|
||||||
|
printf("our ptr: %p\\n", mydata->custom);
|
||||||
|
|
||||||
|
if(timeout_ms) {
|
||||||
|
/* this is the new single timeout to wait for */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* delete the timeout, nothing to wait for now */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
struct priv mydata;
|
||||||
|
CURLM *multi = curl_multi_init();
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, timerfunc);
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_TIMERDATA, &mydata);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.16.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_SOCKETFUNCTION (3),
|
||||||
|
.BR CURLMOPT_TIMERFUNCTION (3)
|
82
core/curl/files/CURLMOPT_TIMERFUNCTION.3
Normal file
82
core/curl/files/CURLMOPT_TIMERFUNCTION.3
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLMOPT_TIMERFUNCTION.md
|
||||||
|
.TH CURLMOPT_TIMERFUNCTION 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLMOPT_TIMERFUNCTION \- callback to receive timeout values
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
int timer_callback(CURLM *multi, /* multi handle */
|
||||||
|
long timeout_ms, /* timeout in number of ms */
|
||||||
|
void *clientp); /* private callback pointer */
|
||||||
|
|
||||||
|
CURLMcode curl_multi_setopt(CURLM *handle, CURLMOPT_TIMERFUNCTION, timer_callback);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a pointer to your callback function, which should match the prototype
|
||||||
|
shown above.
|
||||||
|
|
||||||
|
Certain features, such as timeouts and retries, require you to call libcurl
|
||||||
|
even when there is no activity on the file descriptors.
|
||||||
|
|
||||||
|
Your callback function \fBtimer_callback\fP should install a non\-repeating
|
||||||
|
timer with an expire time of \fBtimeout_ms\fP milliseconds. When that timer
|
||||||
|
fires, call either \fIcurl_multi_socket_action(3)\fP or
|
||||||
|
\fIcurl_multi_perform(3)\fP, depending on which interface you use.
|
||||||
|
|
||||||
|
A \fBtimeout_ms\fP value of \-1 passed to this callback means you should delete
|
||||||
|
the timer. All other values are valid expire times in number of milliseconds.
|
||||||
|
|
||||||
|
The \fBtimer_callback\fP is called when the timeout expire time is changed.
|
||||||
|
|
||||||
|
The \fBclientp\fP pointer is set with \fICURLMOPT_TIMERDATA(3)\fP.
|
||||||
|
|
||||||
|
The timer callback should return 0 on success, and \-1 on error. If this
|
||||||
|
callback returns error, \fBall\fP transfers currently in progress in this
|
||||||
|
multi handle are aborted and made to fail.
|
||||||
|
|
||||||
|
This callback can be used instead of, or in addition to,
|
||||||
|
\fIcurl_multi_timeout(3)\fP.
|
||||||
|
|
||||||
|
\fBWARNING:\fP do not call libcurl directly from within the callback itself
|
||||||
|
when the \fBtimeout_ms\fP value is zero, since it risks triggering an
|
||||||
|
unpleasant recursive behavior that immediately calls another call to the
|
||||||
|
callback with a zero timeout...
|
||||||
|
.SH DEFAULT
|
||||||
|
NULL
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
struct priv {
|
||||||
|
void *custom;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int timerfunc(CURLM *multi, long timeout_ms, void *clientp)
|
||||||
|
{
|
||||||
|
struct priv *mydata = clientp;
|
||||||
|
printf("our ptr: %p\\n", mydata->custom);
|
||||||
|
|
||||||
|
if(timeout_ms) {
|
||||||
|
/* this is the new single timeout to wait for */
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
/* delete the timeout, nothing to wait for now */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
struct priv mydata;
|
||||||
|
CURLM *multi = curl_multi_init();
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_TIMERFUNCTION, timerfunc);
|
||||||
|
curl_multi_setopt(multi, CURLMOPT_TIMERDATA, &mydata);
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.16.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLM_OK if the option is supported, and CURLM_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLMOPT_SOCKETFUNCTION (3),
|
||||||
|
.BR CURLMOPT_TIMERDATA (3)
|
50
core/curl/files/CURLOPT_ABSTRACT_UNIX_SOCKET.3
Normal file
50
core/curl/files/CURLOPT_ABSTRACT_UNIX_SOCKET.3
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLOPT_ABSTRACT_UNIX_SOCKET.md
|
||||||
|
.TH CURLOPT_ABSTRACT_UNIX_SOCKET 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLOPT_ABSTRACT_UNIX_SOCKET \- abstract Unix domain socket
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ABSTRACT_UNIX_SOCKET,
|
||||||
|
char *path);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Enables the use of an abstract Unix domain socket instead of establishing a
|
||||||
|
TCP connection to a host. The parameter should be a char * to a
|
||||||
|
null\-terminated string holding the path of the socket. The path is set to
|
||||||
|
\fIpath\fP prefixed by a NULL byte. This is the convention for abstract
|
||||||
|
sockets, however it should be stressed that the path passed to this function
|
||||||
|
should not contain a leading NULL byte.
|
||||||
|
|
||||||
|
On non\-supporting platforms, the abstract address is interpreted as an empty
|
||||||
|
string and fails gracefully, generating a runtime error.
|
||||||
|
|
||||||
|
This option shares the same semantics as \fICURLOPT_UNIX_SOCKET_PATH(3)\fP in
|
||||||
|
which documentation more details can be found. Internally, these two options
|
||||||
|
share the same storage and therefore only one of them can be set per handle.
|
||||||
|
.SH DEFAULT
|
||||||
|
Default is NULL.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_ABSTRACT_UNIX_SOCKET, "/tmp/foo.sock");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
curl_easy_perform(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.53.0.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_UNIX_SOCKET_PATH (3),
|
||||||
|
.BR unix (7)
|
40
core/curl/files/CURLOPT_ACCEPTTIMEOUT_MS.3
Normal file
40
core/curl/files/CURLOPT_ACCEPTTIMEOUT_MS.3
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLOPT_ACCEPTTIMEOUT_MS.md
|
||||||
|
.TH CURLOPT_ACCEPTTIMEOUT_MS 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLOPT_ACCEPTTIMEOUT_MS \- timeout waiting for FTP server to connect back
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPTTIMEOUT_MS, long ms);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a long telling libcurl the maximum number of milliseconds to wait for a
|
||||||
|
server to connect back to libcurl when an active FTP connection is used.
|
||||||
|
.SH DEFAULT
|
||||||
|
60000 milliseconds
|
||||||
|
.SH PROTOCOLS
|
||||||
|
FTP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/path/file");
|
||||||
|
|
||||||
|
/* wait no more than 5 seconds for FTP server responses */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_ACCEPTTIMEOUT_MS, 5000L);
|
||||||
|
|
||||||
|
curl_easy_perform(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.24.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_CONNECTTIMEOUT_MS (3),
|
||||||
|
.BR CURLOPT_DEBUGFUNCTION (3),
|
||||||
|
.BR CURLOPT_STDERR (3)
|
89
core/curl/files/CURLOPT_ACCEPT_ENCODING.3
Normal file
89
core/curl/files/CURLOPT_ACCEPT_ENCODING.3
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLOPT_ACCEPT_ENCODING.md
|
||||||
|
.TH CURLOPT_ACCEPT_ENCODING 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLOPT_ACCEPT_ENCODING \- automatic decompression of HTTP downloads
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ACCEPT_ENCODING, char *enc);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a char pointer argument specifying what encoding you would like.
|
||||||
|
|
||||||
|
Sets the contents of the Accept\-Encoding: header sent in an HTTP request, and
|
||||||
|
enables decoding of a response when a Content\-Encoding: header is received.
|
||||||
|
|
||||||
|
libcurl potentially supports several different compressed encodings depending
|
||||||
|
on what support that has been built\-in.
|
||||||
|
|
||||||
|
To aid applications not having to bother about what specific algorithms this
|
||||||
|
particular libcurl build supports, libcurl allows a zero\-length string to be
|
||||||
|
set ("") to ask for an Accept\-Encoding: header to be used that contains all
|
||||||
|
built\-in supported encodings.
|
||||||
|
|
||||||
|
Alternatively, you can specify exactly the encoding or list of encodings you
|
||||||
|
want in the response. The following encodings are supported: \fIidentity\fP,
|
||||||
|
meaning non\-compressed, \fIdeflate\fP which requests the server to compress
|
||||||
|
its response using the zlib algorithm, \fIgzip\fP which requests the gzip
|
||||||
|
algorithm, (since curl 7.57.0) \fIbr\fP which is brotli and (since curl
|
||||||
|
7.72.0) \fIzstd\fP which is zstd. Provide them in the string as a
|
||||||
|
comma\-separated list of accepted encodings, like: \fB"br, gzip, deflate"\fP.
|
||||||
|
|
||||||
|
Set \fICURLOPT_ACCEPT_ENCODING(3)\fP to NULL to explicitly disable it, which
|
||||||
|
makes libcurl not send an Accept\-Encoding: header and not decompress received
|
||||||
|
contents automatically.
|
||||||
|
|
||||||
|
You can also opt to just include the Accept\-Encoding: header in your request
|
||||||
|
with \fICURLOPT_HTTPHEADER(3)\fP but then there is no automatic decompressing
|
||||||
|
when receiving data.
|
||||||
|
|
||||||
|
This is a request, not an order; the server may or may not do it. This option
|
||||||
|
must be set (to any non\-NULL value) or else any unsolicited encoding done by
|
||||||
|
the server is ignored.
|
||||||
|
|
||||||
|
Servers might respond with Content\-Encoding even without getting a
|
||||||
|
Accept\-Encoding: in the request. Servers might respond with a different
|
||||||
|
Content\-Encoding than what was asked for in the request.
|
||||||
|
|
||||||
|
The Content\-Length: servers send for a compressed response is supposed to
|
||||||
|
indicate the length of the compressed content so when auto decoding is enabled
|
||||||
|
it may not match the sum of bytes reported by the write callbacks (although,
|
||||||
|
sending the length of the non\-compressed content is a common server mistake).
|
||||||
|
|
||||||
|
The application does not have to keep the string around after setting this
|
||||||
|
option.
|
||||||
|
.SH DEFAULT
|
||||||
|
NULL
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
|
||||||
|
|
||||||
|
/* enable all supported built-in compressions */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, "");
|
||||||
|
|
||||||
|
/* Perform the request */
|
||||||
|
curl_easy_perform(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
This option was called CURLOPT_ENCODING before 7.21.6
|
||||||
|
|
||||||
|
The specific libcurl you are using must have been built with zlib to be able to
|
||||||
|
decompress gzip and deflate responses, with the brotli library to
|
||||||
|
decompress brotli responses and with the zstd library to decompress zstd
|
||||||
|
responses.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
|
||||||
|
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_HTTPHEADER (3),
|
||||||
|
.BR CURLOPT_HTTP_CONTENT_DECODING (3),
|
||||||
|
.BR CURLOPT_TRANSFER_ENCODING (3)
|
42
core/curl/files/CURLOPT_ADDRESS_SCOPE.3
Normal file
42
core/curl/files/CURLOPT_ADDRESS_SCOPE.3
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLOPT_ADDRESS_SCOPE.md
|
||||||
|
.TH CURLOPT_ADDRESS_SCOPE 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLOPT_ADDRESS_SCOPE \- scope id for IPv6 addresses
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ADDRESS_SCOPE, long scope);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a long specifying the scope id value to use when connecting to IPv6 addresses.
|
||||||
|
.SH DEFAULT
|
||||||
|
0
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All, when using IPv6
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
#include <net/if.h> /* for if_nametoindex() */
|
||||||
|
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode ret;
|
||||||
|
long my_scope_id;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||||
|
my_scope_id = if_nametoindex("eth0");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_ADDRESS_SCOPE, my_scope_id);
|
||||||
|
ret = curl_easy_perform(curl);
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.19.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
Returns CURLE_BAD_FUNCTION_ARGUMENT if set to a negative value.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_DEBUGFUNCTION (3),
|
||||||
|
.BR CURLOPT_STDERR (3)
|
72
core/curl/files/CURLOPT_ALTSVC.3
Normal file
72
core/curl/files/CURLOPT_ALTSVC.3
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLOPT_ALTSVC.md
|
||||||
|
.TH CURLOPT_ALTSVC 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLOPT_ALTSVC \- alt\-svc cache file name
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ALTSVC, char *filename);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass in a pointer to a \fIfilename\fP to instruct libcurl to use that file as
|
||||||
|
the Alt\-Svc cache to read existing cache contents from and possibly also write
|
||||||
|
it back to after a transfer, unless \fBCURLALTSVC_READONLYFILE\fP is set in
|
||||||
|
\fICURLOPT_ALTSVC_CTRL(3)\fP.
|
||||||
|
|
||||||
|
Specify a blank filename ("") to make libcurl not load from a file at all.
|
||||||
|
.SH DEFAULT
|
||||||
|
NULL. The alt\-svc cache is not read nor written to file.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTPS
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, CURLALTSVC_H1);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_ALTSVC, "altsvc-cache.txt");
|
||||||
|
curl_easy_perform(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH FILE FORMAT
|
||||||
|
A text based file with one line per alt\-svc entry and each line consists of
|
||||||
|
nine space\-separated fields.
|
||||||
|
|
||||||
|
An example line could look like
|
||||||
|
|
||||||
|
.nf
|
||||||
|
h2 www.example.com 8443 h3 second.example.com 443 "20190808 06:18:37" 1 0
|
||||||
|
.fi
|
||||||
|
|
||||||
|
The fields of that line are:
|
||||||
|
.IP h2
|
||||||
|
ALPN id for the source origin
|
||||||
|
.IP www.example.comp
|
||||||
|
Hostname for the source origin
|
||||||
|
.IP 8443
|
||||||
|
Port number for the source origin
|
||||||
|
.IP h3
|
||||||
|
ALPN id for the destination host
|
||||||
|
.IP second.example.com
|
||||||
|
Hostname for the destination host
|
||||||
|
.IP 443
|
||||||
|
Port number for the destination host
|
||||||
|
.IP 2019*
|
||||||
|
Expiration date and time of this entry within double quotes. The date format
|
||||||
|
is "YYYYMMDD HH:MM:SS" and the time zone is GMT.
|
||||||
|
.IP 1
|
||||||
|
Boolean (1 or 0) if "persist" was set for this entry
|
||||||
|
.IP 0
|
||||||
|
Integer priority value (not currently used)
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.64.1
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_ALTSVC_CTRL (3),
|
||||||
|
.BR CURLOPT_CONNECT_TO (3),
|
||||||
|
.BR CURLOPT_COOKIEFILE (3),
|
||||||
|
.BR CURLOPT_RESOLVE (3)
|
68
core/curl/files/CURLOPT_ALTSVC_CTRL.3
Normal file
68
core/curl/files/CURLOPT_ALTSVC_CTRL.3
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLOPT_ALTSVC_CTRL.md
|
||||||
|
.TH CURLOPT_ALTSVC_CTRL 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLOPT_ALTSVC_CTRL \- control alt\-svc behavior
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
#define CURLALTSVC_READONLYFILE (1<<2)
|
||||||
|
#define CURLALTSVC_H1 (1<<3)
|
||||||
|
#define CURLALTSVC_H2 (1<<4)
|
||||||
|
#define CURLALTSVC_H3 (1<<5)
|
||||||
|
|
||||||
|
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_ALTSVC_CTRL, long bitmask);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Populate the long \fIbitmask\fP with the correct set of features to instruct
|
||||||
|
libcurl how to handle Alt\-Svc for the transfers using this handle.
|
||||||
|
|
||||||
|
libcurl only accepts Alt\-Svc headers over a secure transport, meaning
|
||||||
|
HTTPS. It also only completes a request to an alternative origin if that
|
||||||
|
origin is properly hosted over HTTPS. These requirements are there to make
|
||||||
|
sure both the source and the destination are legitimate.
|
||||||
|
|
||||||
|
Alternative services are only used when setting up new connections. If there
|
||||||
|
exists an existing connection to the host in the connection pool, then that is
|
||||||
|
preferred.
|
||||||
|
|
||||||
|
Setting any bit enables the alt\-svc engine.
|
||||||
|
.IP CURLALTSVC_READONLYFILE
|
||||||
|
Do not write the alt\-svc cache back to the file specified with
|
||||||
|
\fICURLOPT_ALTSVC(3)\fP even if it gets updated. By default a file specified
|
||||||
|
with that option is read and written to as deemed necessary.
|
||||||
|
.IP CURLALTSVC_H1
|
||||||
|
Accept alternative services offered over HTTP/1.1.
|
||||||
|
.IP CURLALTSVC_H2
|
||||||
|
Accept alternative services offered over HTTP/2. This is only used if libcurl
|
||||||
|
was also built to actually support HTTP/2, otherwise this bit is ignored.
|
||||||
|
.IP CURLALTSVC_H3
|
||||||
|
Accept alternative services offered over HTTP/3. This is only used if libcurl
|
||||||
|
was also built to actually support HTTP/3, otherwise this bit is ignored.
|
||||||
|
.SH DEFAULT
|
||||||
|
Alt\-Svc handling is disabled by default. If \fICURLOPT_ALTSVC(3)\fP is set,
|
||||||
|
\fICURLOPT_ALTSVC_CTRL(3)\fP has a default value corresponding to
|
||||||
|
CURLALTSVC_H1 | CURLALTSVC_H2 | CURLALTSVC_H3 \- the HTTP/2 and HTTP/3 bits are
|
||||||
|
only set if libcurl was built with support for those versions.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTPS
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_ALTSVC_CTRL, (long)CURLALTSVC_H1);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_ALTSVC, "altsvc-cache.txt");
|
||||||
|
curl_easy_perform(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.64.1
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_ALTSVC (3),
|
||||||
|
.BR CURLOPT_CONNECT_TO (3),
|
||||||
|
.BR CURLOPT_RESOLVE (3)
|
40
core/curl/files/CURLOPT_APPEND.3
Normal file
40
core/curl/files/CURLOPT_APPEND.3
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLOPT_APPEND.md
|
||||||
|
.TH CURLOPT_APPEND 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLOPT_APPEND \- append to the remote file
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_APPEND, long append);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
A long parameter set to 1 tells the library to append to the remote file
|
||||||
|
instead of overwrite it. This is only useful when uploading to an FTP site.
|
||||||
|
.SH DEFAULT
|
||||||
|
0 (disabled)
|
||||||
|
.SH PROTOCOLS
|
||||||
|
FTP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "ftp://example.com/dir/to/newfile");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
|
||||||
|
curl_easy_setopt(curl, CURLOPT_APPEND, 1L);
|
||||||
|
|
||||||
|
curl_easy_perform(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
This option was known as CURLOPT_FTPAPPEND up to 7.16.4
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_DIRLISTONLY (3),
|
||||||
|
.BR CURLOPT_RESUME_FROM (3),
|
||||||
|
.BR CURLOPT_UPLOAD (3)
|
56
core/curl/files/CURLOPT_AUTOREFERER.3
Normal file
56
core/curl/files/CURLOPT_AUTOREFERER.3
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLOPT_AUTOREFERER.md
|
||||||
|
.TH CURLOPT_AUTOREFERER 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLOPT_AUTOREFERER \- automatically update the referer header
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AUTOREFERER, long autorefer);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a long parameter set to 1 to enable this. When enabled, libcurl
|
||||||
|
automatically sets the Referer: header field in HTTP requests to the full URL
|
||||||
|
when it follows a Location: redirect to a new destination.
|
||||||
|
|
||||||
|
The automatic referer is set to the full previous URL even when redirects are
|
||||||
|
done cross\-origin or following redirects to insecure protocols. This is
|
||||||
|
considered a minor privacy leak by some.
|
||||||
|
|
||||||
|
With \fICURLINFO_REFERER(3)\fP, applications can extract the actually used
|
||||||
|
referer header after the transfer.
|
||||||
|
.SH DEFAULT
|
||||||
|
0, disabled
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/foo.bin");
|
||||||
|
|
||||||
|
/* follow redirects */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
|
||||||
|
|
||||||
|
/* set Referer: automatically when following redirects */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1L);
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Along with HTTP
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if HTTP is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_EFFECTIVE_URL (3),
|
||||||
|
.BR CURLINFO_REDIRECT_URL (3),
|
||||||
|
.BR CURLINFO_REFERER (3),
|
||||||
|
.BR CURLOPT_FOLLOWLOCATION (3),
|
||||||
|
.BR CURLOPT_REFERER (3)
|
88
core/curl/files/CURLOPT_AWS_SIGV4.3
Normal file
88
core/curl/files/CURLOPT_AWS_SIGV4.3
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLOPT_AWS_SIGV4.md
|
||||||
|
.TH CURLOPT_AWS_SIGV4 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLOPT_AWS_SIGV4 \- V4 signature
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_AWS_SIGV4, char *param);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Provides AWS V4 signature authentication on HTTP(S) header.
|
||||||
|
|
||||||
|
Pass a char pointer that is the collection of specific arguments are used for
|
||||||
|
creating outgoing authentication headers. The format of the \fIparam\fP option
|
||||||
|
is:
|
||||||
|
.IP provider1[:provider2[:region[:service]]]
|
||||||
|
.IP "provider1, provider2"
|
||||||
|
The providers arguments are used for generating some authentication parameters
|
||||||
|
such as "Algorithm", "date", "request type" and "signed headers".
|
||||||
|
.IP region
|
||||||
|
The argument is a geographic area of a resources collection.
|
||||||
|
It is extracted from the hostname specified in the URL if omitted.
|
||||||
|
.IP service
|
||||||
|
The argument is a function provided by a cloud. It is extracted from the
|
||||||
|
hostname specified in the URL if omitted.
|
||||||
|
|
||||||
|
NOTE: This call set \fICURLOPT_HTTPAUTH(3)\fP to CURLAUTH_AWS_SIGV4.
|
||||||
|
Calling \fICURLOPT_HTTPAUTH(3)\fP with CURLAUTH_AWS_SIGV4 is the same
|
||||||
|
as calling this with \fB"aws:amz"\fP in parameter.
|
||||||
|
|
||||||
|
Example with "Test:Try", when curl uses the algorithm, it generates
|
||||||
|
\fB"TEST\-HMAC\-SHA256"\fP for "Algorithm", \fB"x\-try\-date"\fP and
|
||||||
|
\fB"X\-Try\-Date"\fP for "date", \fB"test4_request"\fP for "request type",
|
||||||
|
\fB"SignedHeaders=content\-type;host;x\-try\-date"\fP for "signed headers"
|
||||||
|
|
||||||
|
If you use just "test", instead of "test:try", test is used for every
|
||||||
|
generated string.
|
||||||
|
.SH DEFAULT
|
||||||
|
By default, the value of this parameter is NULL.
|
||||||
|
Calling \fICURLOPT_HTTPAUTH(3)\fP with CURLAUTH_AWS_SIGV4 is the same
|
||||||
|
as calling this with \fB"aws:amz"\fP in parameter.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
HTTP
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL,
|
||||||
|
"https://service.region.example.com/uri");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_AWS_SIGV4, "provider1:provider2");
|
||||||
|
|
||||||
|
/* service and region can also be set in CURLOPT_AWS_SIGV4 */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/uri");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_AWS_SIGV4,
|
||||||
|
"provider1:provider2:region:service");
|
||||||
|
|
||||||
|
curl_easy_setopt(curl, CURLOPT_USERPWD, "MY_ACCESS_KEY:MY_SECRET_KEY");
|
||||||
|
curl_easy_perform(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.75.0
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH NOTES
|
||||||
|
This option overrides the other auth types you might have set in
|
||||||
|
\fICURLOPT_HTTPAUTH(3)\fP which should be highlighted as this makes this auth
|
||||||
|
method special. This method cannot be combined with other auth types.
|
||||||
|
|
||||||
|
A sha256 checksum of the request payload is used as input to the signature
|
||||||
|
calculation. For POST requests, this is a checksum of the provided
|
||||||
|
\fICURLOPT_POSTFIELDS(3)\fP. Otherwise, it is the checksum of an empty buffer. For
|
||||||
|
requests like PUT, you can provide your own checksum in an HTTP header named
|
||||||
|
\fBx\-provider2\-content\-sha256\fP.
|
||||||
|
|
||||||
|
For \fBaws:s3\fP, a \fBx\-amz\-content\-sha256\fP header is added to every request
|
||||||
|
if not already present. For s3 requests with unknown payload, this header takes
|
||||||
|
the special value "UNSIGNED\-PAYLOAD".
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_HEADEROPT (3),
|
||||||
|
.BR CURLOPT_HTTPAUTH (3),
|
||||||
|
.BR CURLOPT_HTTPHEADER (3),
|
||||||
|
.BR CURLOPT_PROXYAUTH (3)
|
58
core/curl/files/CURLOPT_BUFFERSIZE.3
Normal file
58
core/curl/files/CURLOPT_BUFFERSIZE.3
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLOPT_BUFFERSIZE.md
|
||||||
|
.TH CURLOPT_BUFFERSIZE 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLOPT_BUFFERSIZE \- receive buffer size
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_BUFFERSIZE, long size);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a long specifying your preferred \fIsize\fP (in bytes) for the receive buffer
|
||||||
|
in libcurl. The main point of this would be that the write callback gets
|
||||||
|
called more often and with smaller chunks. Secondly, for some protocols, there
|
||||||
|
is a benefit of having a larger buffer for performance.
|
||||||
|
|
||||||
|
This is just treated as a request, not an order. You cannot be guaranteed to
|
||||||
|
actually get the given size.
|
||||||
|
|
||||||
|
This buffer size is by default \fICURL_MAX_WRITE_SIZE\fP (16kB). The maximum
|
||||||
|
buffer size allowed to be set is \fICURL_MAX_READ_SIZE\fP (10MB). The minimum
|
||||||
|
buffer size allowed to be set is 1024.
|
||||||
|
|
||||||
|
DO NOT set this option on a handle that is currently used for an active
|
||||||
|
transfer as that may lead to unintended consequences.
|
||||||
|
|
||||||
|
The maximum size was 512kB until 7.88.0.
|
||||||
|
.SH DEFAULT
|
||||||
|
CURL_MAX_WRITE_SIZE (16kB)
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
CURLcode res;
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "sftp://example.com/foo.bin");
|
||||||
|
|
||||||
|
/* ask libcurl to allocate a larger receive buffer */
|
||||||
|
curl_easy_setopt(curl, CURLOPT_BUFFERSIZE, 120000L);
|
||||||
|
|
||||||
|
res = curl_easy_perform(curl);
|
||||||
|
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
Added in 7.10. Growing the buffer was added in 7.53.0.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLOPT_MAXFILESIZE (3),
|
||||||
|
.BR CURLOPT_MAX_RECV_SPEED_LARGE (3),
|
||||||
|
.BR CURLOPT_UPLOAD_BUFFERSIZE (3),
|
||||||
|
.BR CURLOPT_WRITEFUNCTION (3)
|
66
core/curl/files/CURLOPT_CAINFO.3
Normal file
66
core/curl/files/CURLOPT_CAINFO.3
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
.\" generated by cd2nroff 0.1 from CURLOPT_CAINFO.md
|
||||||
|
.TH CURLOPT_CAINFO 3 "March 15 2024" libcurl
|
||||||
|
.SH NAME
|
||||||
|
CURLOPT_CAINFO \- path to Certificate Authority (CA) bundle
|
||||||
|
.SH SYNOPSIS
|
||||||
|
.nf
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_CAINFO, char *path);
|
||||||
|
.fi
|
||||||
|
.SH DESCRIPTION
|
||||||
|
Pass a char pointer to a null\-terminated string naming a file holding one or
|
||||||
|
more certificates to verify the peer with.
|
||||||
|
|
||||||
|
If \fICURLOPT_SSL_VERIFYPEER(3)\fP is zero and you avoid verifying the
|
||||||
|
server\(aqs certificate, \fICURLOPT_CAINFO(3)\fP need not even indicate an
|
||||||
|
accessible file.
|
||||||
|
|
||||||
|
This option is by default set to the system path where libcurl\(aqs CA
|
||||||
|
certificate bundle is assumed to be stored, as established at build time.
|
||||||
|
|
||||||
|
(iOS and macOS) When curl uses Secure Transport this option is supported. If
|
||||||
|
the option is not set, then curl uses the certificates in the system and user
|
||||||
|
Keychain to verify the peer.
|
||||||
|
|
||||||
|
(Schannel) This option is supported for Schannel in Windows 7 or later but we
|
||||||
|
recommend not using it until Windows 8 since it works better starting then.
|
||||||
|
If the option is not set, then curl uses the certificates in the Windows\(aq
|
||||||
|
store of root certificates (the default for Schannel).
|
||||||
|
|
||||||
|
The application does not have to keep the string around after setting this
|
||||||
|
option.
|
||||||
|
|
||||||
|
The default value for this can be figured out with \fICURLINFO_CAINFO(3)\fP.
|
||||||
|
.SH DEFAULT
|
||||||
|
Built\-in system specific. When curl is built with Secure Transport or
|
||||||
|
Schannel, this option is not set by default.
|
||||||
|
.SH PROTOCOLS
|
||||||
|
All TLS based protocols: HTTPS, FTPS, IMAPS, POP3S, SMTPS etc.
|
||||||
|
.SH EXAMPLE
|
||||||
|
.nf
|
||||||
|
int main(void)
|
||||||
|
{
|
||||||
|
CURL *curl = curl_easy_init();
|
||||||
|
if(curl) {
|
||||||
|
curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");
|
||||||
|
curl_easy_setopt(curl, CURLOPT_CAINFO, "/etc/certs/cabundle.pem");
|
||||||
|
curl_easy_perform(curl);
|
||||||
|
curl_easy_cleanup(curl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fi
|
||||||
|
.SH AVAILABILITY
|
||||||
|
For the SSL engines that do not support certificate files the
|
||||||
|
\fICURLOPT_CAINFO(3)\fP option is ignored. Schannel support added in libcurl
|
||||||
|
7.60.
|
||||||
|
.SH RETURN VALUE
|
||||||
|
Returns CURLE_OK if the option is supported, CURLE_UNKNOWN_OPTION if not, or
|
||||||
|
CURLE_OUT_OF_MEMORY if there was insufficient heap space.
|
||||||
|
.SH SEE ALSO
|
||||||
|
.BR CURLINFO_CAINFO (3),
|
||||||
|
.BR CURLOPT_CAINFO_BLOB (3),
|
||||||
|
.BR CURLOPT_CAPATH (3),
|
||||||
|
.BR CURLOPT_CA_CACHE_TIMEOUT (3),
|
||||||
|
.BR CURLOPT_SSL_VERIFYHOST (3),
|
||||||
|
.BR CURLOPT_SSL_VERIFYPEER (3)
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user