-
Notifications
You must be signed in to change notification settings - Fork 1.4k
[net] Add libcurl based support for files on HTTP remotes #19842
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
|
@jblomer I'll check |
78005e7 to
11c23f0
Compare
Test Results 18 files 18 suites 2d 23h 39m 39s ⏱️ Results for commit a59ad28. ♻️ This comment has been updated with latest results. |
2a5dd62 to
a59ad28
Compare
|
Note that after successful build on Windows, some of the tests fail like: |
dpiparo
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for these changes. I approved them provided that the win tests are understood and something in the release notes is added about this new option.
RCurlConnection is an internal class that wraps around a libcurl easy handle. The RCurlConnection class takes care of - URL escaping - HEAD request - (Multi-)Range GET requests
b1bf36f to
11476da
Compare
|
Thanks @jblomer . FYI, I'll have to install |
Add new
TFileandRRawFileplugins that use libcurl for the HTTP transfers. This can eventually replace the Davix dependency and also the olderTWebFileandTS3WebFile. The curl library gives access to a modern HTTP implementation (e.g., h2), and it works on Linux, macOS, and Windows with their respective native SSL stacks.@bellenot: on Windows, we may need to build libcurl ourselves. As far as I understand, Windows ships the
curlcommand line library but not the library.The current implementation does HEAD and (multi-)range GET queries, which provides the basics for efficient use of HTTP in ROOT. It can be enabled with
-Dcurl=on. If davix is available alongside the curl plugins, the curl plugins replace the davix plugins ifCurl.ReplaceDavix: yesis set in the rootrc file.Authentication can relatively easily be added, since S3 (AWSv4 signatures), bearer token authentication and X.509 client certificates are already supported by libcurl.
Metalink support can in principle be added if still needed. It requires XML parsing of the metalink snippet.
Write support (POST, PUT) requests can in principle be added if still needed, but require a closer look.
See also root-project/root-ci-images#73 and root-project/root-ci-images#75