- Fix build with curl 7.62.0
- Support building against ruby 1.8 to help people migrate to the future and beyond
- Improve timeout= to allow Floating point values automatically switch to timeout_ms
- Add SOCKS5_HOSTNAME support.
- Addes Curl::Multi.autoclose and Curl::Multi#close to improve connection handling. In past releases connection clean up only ever happens when GC runs. Now in this release you can explicitly control connections via multi.close or have it always close your connections with Curl::Multi.autoclose=true.
- Possibly breaking change with request handling, reduces C (lines of code) and might resolve segfault when mixing curb with ruby timeout
- Timeout change is possibly breaking for anyone who expected 0.9 to == 0 or infinity
- Guard use of CURLOPT_RESOLVE in #if HAVE_CURLOPT_RESOLVE
- Prevent
NoMethodErrorwhen no HTTP Status Curl.urlalizewill miss raw url's query params- Fix SSL versions constant names
- Add
Curl::Easy#resolvemethod to implement static IP overrides, bypassing DNS - Add new curl features
- Allow extending
Curl::Easyand having a different number of constructor arguments thanCurl::Easyallows
- Fix
multi.pipeline:HAVE_CURLMOPT_PIPELININGwas never defined - Eliminate warnings on Ruby 2.4.1
- Hang in
select() - Revert 'Experimenting with adding multi handle cleanup after every request, normally would be cleaned up with GC' (problem addressed by fix hang in
select()) - Prevent errant callbacks once the handle is cleaned up
- Add
PATCHsupport? - Add support for
CURLOPT_PATH_AS_IS - Add
.cookielistmethod toCurb::Easy - Improved Windows compatibility
- Correctly check for constants that may not be present in older versions of Curl
- Change base class for exceptions from
ExceptiontoStandardError
- Segmentation fault (introduced with commit 50ab567)
- Use 64-bit int for key in hash of active easy handles, to avoid clobbering on 32-bit systems
- Fix
http_auth_typesfor:anyand:anysafe - Use
LONG2NUMandNUM2LONGto support all values of thelongtype - Support empty reason phrases in the HTTP status line
- Implement setting of
CURLOPT_MAXCONNECTS - Implement setting of
CURLOPT_FORBID_REUSE - Ability to specify specific allowed TLS versions when connecting
- Add support for HTTP/2.0 and multiplexing
- Experimenting with adding multi handle cleanup after every request, normally would be cleaned up with GC
- Fix regression in
timeout/timeout_mshandling
- Remove
CURLAUTH_ANYas the default for authentication setting, as too many services in the world don't respond correctly with a 401 but instead 403 so the option rarely works as we'd hope - Use the memory address as the key to correctly keep a hash of active easy handles alive in the multi handle -- should resolve existing reports of memory leaks as well as crashes under some conditions
- Only append query string if it exists
- Setting any of CURLOPT_HEADER, CURLOPT_NOPROGRESS, CURLOPT_NOSIGNAL, CURLOPT_HTTPGET did not work (introduced in commits 4358d04 and 14e9b53)
- Compilation for curl versions before 7.40.0
Curl::Multi.httpcall of theon_completecallback expects unsupplied parameter
- Add
Curl::HTTP_2_0, andCurl.http2? - Support
CURLOPT_UNIX_SOCKET_PATHinCurl::Easy - Add
timeout_ms/connect_timeout_msoptions - Add
on_redirectcallback handling to.http
Curl::Easy.http_getbroken on macOS
- Restore support for older, pre-7.17 versions of curl (fixes CentOS 5 compatibility)
- Improve Ruby 2.2.x support (use
rb_thread_fd_selectinstead ofrb_thread_select)
- Add SOCKS4A support
- Allow custom ssl cipher lists
- Add install instructions for Windows
- Make it possible easily reset the Thread current handle (
Curl.reset)
- Add suport for the new error
CURLM_ADDED_ALREADYintroduced at curl 7.33.0 - Add conditionals for new
URLM_ADDED_ALREADYerror Curl#urlalize-CGI.escapefor param values- Use correct HTTP verb for DELETE requests (was
delete, and some servers are apparently case sensitive) - Typo in
ext/curb_errors.c:BadBasswordError->BadPasswordError - Status method now returns the last status in the response header
- Support Ruby 2.2.0
- Support
CURLOPT_TCP_NODELAYinCurl::Easy - Raise an exception if curb doesn't know how to handle a
CURLOPT - Expose license via gemspec
- Implement seek function for multi-pass authentication uploads
- Guard against a curl without GSSAPI delegation compiled in
- Added
extconf.rbentry forappconnect - Reset handle before each call when using "super simple API"
- Added support for
app_connect_timefromlibcurl - Alias
body_strtobodyandheader_strtohead
- Setting
post_bodytonildoes not reset data posted inhttp(:GET) - Various spurious/inconsequential warnings
Curl.headusesOPTIONSmethod instead ofHEADmethod
- Make "super simple API" more efficient by storing
Curl::Easyinstance inThread.current - GSSAPI: Add required flags for GSSAPI delegation support
- GSSAPI: Allow setting of the new delegation flag
- GSSAPI: Implement support for libcurl SPNEGO flags in curb
- Clang compatibility
- Allow string data with simpler interface e.g.
Curl.post('...', 'data')
- Error installing on Ubuntu
- Protect callbacks from reset/close
Curl::Multinot actually performing HTTP requests in cases when the:max_connects >= number of requests- Build error when compiled with
-Werror=format-security postalizeparameter escaping
- Support
CURLINFO_REDIRECT_URL - Support
CURLOPT_RESUME_FROMinCurl::Easy - Add
.statustoCurl::Easyinstances - Support
CURLOPT_FAILONERROR - Add even easier interface:
Curl.get/Curl.post/ etc
on_failureonly fires for 5xx responses
- Error in README section for HTTP POST file upload.
- Add a default for
resolve_modetoCURL_IPRESOLVE_WHATEVERe.g.:auto - Add
on_redirectandon_missingcallbacks for 3xx/4xx responses - Allow
http_post(array_of_fields)when using multipart form posts
- Check for obsolete, since it appears to be gone from later versions of libcurl per issue #100
- Regression in PUT requests with NULL bytes (caused by
RSTRING_PTR=>StringValueCStrchange)
- Restore compatibility with 0.7.16 (e.g. suport for building without
CURLOPT_SEEKDATA, etc) - Use
rb_thread_blocking_regionwhen available in place ofrb_thread_selectfor ruby 1.9.x - Copy-paste mistake which made it impossible to set CURLOPT_SSL_VERIFYHOST to '2'
- Copy-paste mistake that caused
CURLOPT_SSL_VERIFYPEERto be overwritten by the value ofuse_netrcsetting
- Warn on exceptions in success/failure/complete callbacks
- Use
StringValueCStrmore instead of the less safeRSTRING_PTR - Defaulting
CURLOPT_SSL_VERIFYHOSTto2to make it consistent with cURLs default value
- Add better support for timeouts issue 48
- Improve stablity, avoid bus errors when raising in callbacks
- Allow Content-Length header when sending a PUT request
- Better handling of cacert
- Support CURLOPT_IPRESOLVE
- Allow PostField.file#to_s
- Minor refactoring to how PostField.file handles strings
- Accept symbol and any object that responds_to?(:to_s) for easy.http(:verb)
- Free memory sooner after a request finishes instead of waiting for garabage collection
- Fix crash when sending nil for the http_put body
- Fix inspect for Curl::Easy, thanks Hongli Lai
- Fix unit test assertions for Curl::Multi, thanks Hongli Lai
- Curl::Multi perform is more robust process callbacks before exiting the loop - issue 24. thanks igrigorik and ramsingla
- improve Curl::Multi idle callback robustness, trigger callbacks more often - issue 24. thanks igrigorik and ramsingla
- fix bug in http_* when http_delete or http("verb") raises an exception
- add support for autoreferrer e.g. if follow_location=true it will pass that along
- minor fix for no signal instead of INT2FIX Check boolean value
- add support to set the http version e.g. easy.version = Curl::HTTP_1_1
- add support to disable libcurls internal use of signals.
- Support rubinius
- allow Multi.download to be called without a block
- add additional Multi.download examples
- Start tracking high level changes
- Add Curl::Easy#close - hard close an easy handle
- Add Curl::Easy#reset - reset all settings but keep connections alive
- Maintain persistent connections for single easy handles