1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339
|
6.2.1
- Workaround for change of behavior in libcurl 8.12.0
- The multi-run fail callback argument now has a curl-error class
- Fixed a slowness in curl_echo() due to threading problem in httpuv
6.2.0
- MacOS: we have temporarily switched to a static build of libcurl 8.11.1 until
apple updates their very buggy libcurl (#376)
- Fix LTO error for R_multi_setopt
- Fix parsing of #fragment links in curl_parse() (#366)
6.1.0
- Fix a rchk bug
- Enable CURLOPT_PIPEWAIT by default to prefer multiplex when possible
- Enable setting max_streams in multi_set(), default to 10
- Allow open(curl::curl()) to be interrupted
- Interrupting a download no longer causes an error (#365)
6.0.1
- Fix a build issue with libcurl 8.11.0
- Support multi_fdset() for connection objects (#355)
6.0.0
- New curl_parse_url() function to expose curl URL parsing interface.
- Errors now have classes and more detailed messages
- Do not use shared connection pool for FTP requests (works around bug in
libcurl < 8.8.0)
- Properly clean handle when open() fails for a curl() connection
- Parameter 'timeout' renamed to 'multi-timeout' in multi_download()
- Default behavior is now to error if a download is stalled for 600 seconds
- The MacOS binary packages now require at least libcurl 7.80 which is included
with all current MacOS versions (13+) as well as recent patch releases for
legacy MacOS versions (11.7 and 12.7).
- Windows: update to libcurl 8.10.1
5.2.3
- Remove some CMD check verbosity per new CRAN rules
- New maintainer email address
5.2.2
- Disable a compression test for libcurl 8.7.1 which has a bug for deflate
- Change a unit test to work around firewall problems on CRANs WinBuilder
5.2.1
- In handle_setheader(), setting a header to a non-empty whitespace string will
now send a blank header. Using an empty string will still remove the header
altogether (this has not changed).
- Internally simplify handle_setheader() as a wrapper for handle_setopt(httpheader)
- Fix an issue where curl_fetch_stream() might not return all bytes received
by the C layer if the server closed the connection mid-response.
- No longer enable CURLOPT_UNRESTRICTED_AUTH by default
- Fix code to build with -DR_NO_REMAP (add all the Rf_ prefixes)
5.2.0
- The CURL_CA_BUNDLE envvar is now also used on non-Windows.
- curl_echo() now uses a random available port to run httpuv
- Add workaround for slowness in curl_echo() on Linux
- Fix a few printf format warnings
5.1.0
- Windows: update to libcurl 8.3.0 + nghttp2 2-1.56 + openssl 3.1.2.
5.0.2
- Fix a unit test for behavioral change in libcurl 8.0.0
- Support seekfunction callback
5.0.1
- Setting verbose=TRUE now prints to R's stderr instead of the process, such that
it works better with some GUIs.
- multi_download() now sets mtime for downloaded files from server
- form_file() now supports setting an alternate file name (#290)
- Fix for multi_download() when downloading 0byte files
- Use a self hosted httpbin test server
5.0.0
- New function multi_download() which supports concurrent downloads and resuming
download for large files, while giving detailed progress information.
- Windows: updated libcurl to 7.84.0 + nghttp2
- Windows: default to CURLSSLOPT_NATIVE_CA when using openssl unless an ennvar
with CURL_CA_BUNDLE is set.
- Use the new optiontype API for type checking if available (libcurl 7.73.0)
4.3.3
- Add support for setting ssl_ctx_function callbacks
- Normalize curlopt_postfields to curlopt_copypostfields to transfer ownership
of the input data to libcurl.
- Fix strict-prototype errors
4.3.2
- Windows: update binaries to openssl 1.1.1k and libssh2 1.9.0
- Windows: fix build for experimental ucrt toolchains
4.3.1
- Make tests pass if 'httpuv' is not available (BDR)
- Some cleanup for Windows compilers
4.3
- No longer enable HTTP/2 by default on libcurl < 7.62.0 because some old libcurl
versions have annoying HTTP/2 bugs which randomly cause requests to fail. Note
that libcurl 7.62 and up always enable HTTP/2 when possible, this doesn't change.
- Add paragraph to intro vignette that explain ENUM options, which are a common
source of bugs. Specifically explain CURLOPT_HTTP_VERSION.
- curl::has_internet() now checks that result of nslookup is actually correct.
This should detect offline networks with fake internal DNS.
- curl::send_mail() now supports TLS connections, by specifying the smtps://
protocol in the smtp_server argument. The use_ssl argument actually controls
whether STARTTLS is enabled; the function documentation has been updated to
clarify that, and the default for use_ssl has been changed to "try" (=TRUE).
- Fix build for gcc 10 (-fno-common) requested by CRAN.
4.2
- Fix for old versions of libcurl (build was broken in 4.1 on RHEL / CentOS).
- Add hostname to timeout errors (#190)
4.1
- Fixed typechecking code for new internal macro names in libcurl 7.66
- Rewrite typechecking to work better with clang and old libcurl (#192)
- has_internet() now checks for connectivity via a proxy server if one is detected
- Windows: respect the CURL_SSL_BACKEND variable for people that want to use OpenSSL.
- Windows: respect CURL_CA_BUNDLE if (and only if) CURL_SSL_BACKEND == openssl
- curl_download now writes to a temporary file, which is renamed to the destfile
upon success. This prevents corrupt files when a download fails or is interrupted.
- Automatically set forbid_reuse = TRUE in curl_echo() handles
- Update symbol table to 7.66.0
4.0
- Stricter type checking for handle options based on <curl/typecheck-gcc.h> macros
- curl_symbols is now a function instead of a static table to allow easy filtering
- curl_fetch_memory now over-allocates also on unix to avoid many realloc calls
- Re-enable cookie unit test which should be fixed in curl 7.64.0
- Fix encoding of paths for downloading and uploading files (@jennybc, #183)
- Fix LTO declaration warning for R_get_proxy_for_url
- Better support for setting slist (string vector) options such as mail_rcpt
- New send_mail() function to send emails with the libcurl smtp client
- Add function curl_upload() to upload file to FTP or SCP server
- Windows: upgrade to libcurl 7.64.1
- Update symbol data to curl 7.64.1
3.3
- The 'data' callback from multi_add() gains a 'final' parameter
- The 'data' callback from multi_add() can be given a file path to stream to files
- New internal efficient file_writer type used when 'data' callback is a file path
- Progress / Xfer callback functions are now explicitly protected (#157)
- Tweak some unit tests to give less false positives
- curl_echo() has been changed to return better structured output
- Added curl_fetch_echo() as a wrapper for curl_echo()
- Response for curl_fetch_memory() gains a 'type' field with the content-type
- Fix a unit test for OpenSSL 1.1.1
- Better default progress function if no progresfun or xferinfofun is set
- Skip unit tests if no internet is available
- Fix rchk and valgrind warnings from CRAN
- Updated symbol table up with curl 7.64.0
- Use native routine registration and visibility
3.2
- Windows: Update libcurl to 7.59.0
- Update curl_symbols dataset to 7.59.0
- Fix an IDN unit test (malmö.se has messed up their SSL cert)
- Add unit test for multi_fdset
- Add backport of trimws for R 3.1
3.1
- Fix potential memory bug in curl() when doubling the buffer is insufficient.
- Windows: update to libcurl 7.56.1, restore support for libssh2.
- Added unit test for curl_echo() to post large multipart data.
- Fix IDN unit test error "string has forbidden bi-directional properties"
3.0
- MAJOR CHANGE ON WINDOWS: On Windows 7 / 2008-R2 and up we switch from OpenSSL to native Windows SSL
(secure channel). Therefore curl now uses certificates from the windows certificate manager.
This enables users on corporate/government networks to connect through enterprise proxies and such.
On Windows Vista/2008 and older (including CRAN) we still use OpenSSL to guarantee TLS 1.1/1.2 support.
Other changes:
- Windows: updated libcurl to v7.56.0 with dual SSL and native IDN/SSPI
- multi_add() and curl_fetch_multi() gain an optional 'data' callback parameter
- New function multi_fdset() returns the file descriptors of a multi pool
- Add CURLOPT_PROXYAUTH = CURLAUTH_ANY to default handle settings
2.8.1
- Windows: switch back to OpenSSL instead of SecureChannel because Windows 2008 (CRAN) does not
support TLS 1.1 and TLS 1.2 which is required for many servers now.
2.8 (unpublished)
- Windows: EXPERIMENTAL: on R 3.5+ curl now uses SecureChannel instead of OpenSSL for https.
- Windows: updated libcurl to v7.54.1 with native windows IDN. Dropped nghttp2 and rtmp support.
- Windows: nslookup() now uses IdnToAscii() for non-ascii domains
- Add IDN unit tests on supported platforms
- Error messages from libcurl include more detail when available (via CURLOPT_ERRORBUFFER)
- Set a default CURLOPT_READFUNCTION because libcurls default can cause R to freeze
- Fix a bug for empty forms and/or empty form-fields (+ added unit tests for this)
- The 'multi_run()' function gains a parameter 'poll' to return immediately when a request completes.
- Disable 'Expect: 100-continue' for POST requests (deprecated in libcurl)
- Fix two rchk PROTECT warnings (thanks to Tomas Kalibera)
2.7
- New function parse_headers_list() to parse response headers into named list
- nslookup() gains a parameter 'multi' to return multiple matches
- Automatically set 'POSTFIELDSIZE_LARGE' when setting 'POSTFIELDS' or 'COPYPOSTFIELDS' to raw vector
- Do not crash when passing invalid objects as handles
- Workaround for empty forms, i.e. calling handle_setform() with no arguments
2.6
- nslookup() gains a parameter ipv4_only = TRUE (fixes unit test on Mavericks)
2.5
- Add curl_echo() function for easy testing
- Add support for curlopt_xferinfofunction, used in curl_echo()
- Automatically set curlopt_noprogress = 0 when setting one of the progress functions
- Automatically use XFERINFOFUNCTION vs PROGRESSFUNCTION depending on libcurl version
- Default User-Agent is now: options("HTTPUserAgent")
- Requests will now abort if progress/xferinfo callback raises an error
- Open a connection with mode 'f' to skip stop_for_status() during open()
2.4
- Windows: update libcurl to 7.53.1 with libssl 1.0.2k
- New form_data() function to POST form with string/raw values with custom conten-type
- Fix busy waiting for curl_fetch_stream()
- Tweaks for open(con, blocking = FALSE)
- Switch memcpy() to memmove() to please valgrind
- Assert that curl() connection is only opened in read mode
2.3
- All interruptable handles now use a global pool to share connections. Fixes #79.
- Enable interruptable interface by default, even in non-interactive mode.
- Update libcurl on Windows to 7.51.0
- Unit tests now try serveral httpbin mirrors in case one goes down
- Support open(con, blocking = FALSE) and isIncomplete() for curl() connections
- Switch curl_fetch_stream to non-blocking implementation
2.2
- Fixed bug in multi that did not actually enable or disable multiplexing.
- Switch unit tests to HTTP/2 server to get HTTP/2 testing coverage
- Fix big endian build on GLIBC systems (tnx Aurelien Jarno and Andreas Tille)
2.1
- If libcurl >= 7.47 and was built --with-nghttp2, automatically enable HTTP/2
on HTTPS connections (matches behavior of 'curl' cmd util)
- Upgrade to libcurl 7.50.3 (--with-nghttp2) on Windows (Adds HTTP/2 support)
- Fix a unit test that would fail on fast servers
2.0
- New multi interface for concurrent async requests!
- Updated vignette with simple multi examples
- Export handle_data() to get handle state
1.2
- Fix for getaddrinfo GNU extension on some unix platforms
1.1
- Fix ASAN warning in curl.c (reference after free)
1.0
- Fix for FreeBSD
- Simplify handle refCount system
- Better handle locking to prevent using/modifying open handles
- Make unit tests always close connection to prevent 'unused connection' warnings
- Add support for interruptions in curl_download()
0.9.7
- The non-blocking download method is now only used in interactive mode
- Use options(curl_interrupt = TRUE) to force nonblocking in non-interactive mode
- Updated libcurl on windows to 7.47.1. This should fix IPv6 problems.
- Update the curl_symbols table to 7.48
0.9.6
- Use non-blocking code in curl_fetch_memory to support user interruptions.
- Configure script no longer assumes bash so it works on OpenBSD.
- Fix for Snow Leopard CRAN build server.
- Added has_internet() function.
0.9.5
- Added nslookup() as cross-platform alternative to nsl()
0.9.4
- Move the creation of the option table to ./R/options.R
- The curl_options() function gains an argument to filter by name
- Properly invoke winhttp.def file in Makevars.win (required for new toolchain)
0.9.3
- Refactor configure script to use pkg-config
- Use the preprocessor to extract CURLOPT symbols during install
- Don't use setInternet2() in R > 3.2.2
0.9.2
- Optimization for windows to make realloc in curl_fetch_memory faster
- Updated the curl_symbols table to 7.43
- Updated the static libraries on Windows:
* libcurl 7.43.0
* openssl 1.0.2d
* libssh2 1.6.0
* libiconv 1.14-5
* libidn 1.31-1
- New functions for Windows: ie_proxy_info and ie_get_proxy_for_url
0.9.1
- Convert url argument to utf8 strings in escape/unescape
- Endian fix for BSD systems
- Add support for setting curlopt_xxx_large options
0.9
- Fix for very old versions of libcurl (RHEL 5)
- Do not convert paths to UTF-8 (only URLs)
- Improve error message for unknown options
0.8
- Fix for curl() character reader to invert byte-order on big endian architectures.
0.7
- Rename the C function 'fetch' to 'fetchdata' because of Solaris conflict.
- Move warning about missing CA bundle on Windows to onAttach.
0.6
- Validation of SSL certificates is now enabled by default if a bundle is available.
- Major rewrite to support configurable and reusable handles
- Added new_handle, handle_setopt, handle_setheaders, handle_setform, handle_reset, etc.
- Added curl_fetch interfaces for httr
- Add ie_proxy_settings to get system proxy configuration on windows
0.5
- Check for CURLM_CALL_MULTI_PERFORM to support very old versions of libcurl
0.4
- Fixed a memory bug that could cause R to crash
- Add curl_escape, curl_unescape
- Add curl_version and curl_options
0.3
- Add curl_download function
- More efficient use of realloc
- Fix for older versions of libcurl (e.g. Snow Leopard)
- Add support for user interrupts while downloading (ESC or CTRL+C)
- Fixed bug that caused GC to corrupt connection object
- Refactoring and cleanup
0.2
- add support for recycling connections
0.1
- initial release
|