- Fix build with curl 7.62.0
- Possibly breaking change with request handling, reduces C (lines of code) and might resolve segfault when mixing curb with ruby timeout
- 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.
- 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
NoMethodError
when no HTTP Status Curl.urlalize
will miss raw url's query params- Fix SSL versions constant names
- Add
Curl::Easy#resolve
method to implement static IP overrides, bypassing DNS - Add new curl features
- Allow extending
Curl::Easy
and having a different number of constructor arguments thanCurl::Easy
allows
- Fix
multi.pipeline
:HAVE_CURLMOPT_PIPELINING
was 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
PATCH
support? - Add support for
CURLOPT_PATH_AS_IS
- Add
.cookielist
method 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
Exception
toStandardError
- 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_types
for:any
and:anysafe
- Use
LONG2NUM
andNUM2LONG
to support all values of thelong
type - 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_ms
handling
- Remove
CURLAUTH_ANY
as 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.http
call of theon_complete
callback expects unsupplied parameter
- Add
Curl::HTTP_2_0
, andCurl.http2?
- Support
CURLOPT_UNIX_SOCKET_PATH
inCurl::Easy
- Add
timeout_ms
/connect_timeout_ms
options - Add
on_redirect
callback handling to.http
Curl::Easy.http_get
broken 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_select
instead 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_ALREADY
introduced at curl 7.33.0 - Add conditionals for new
URLM_ADDED_ALREADY
error Curl#urlalize
-CGI.escape
for 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_NODELAY
inCurl::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.rb
entry forappconnect
- Reset handle before each call when using "super simple API"
- Added support for
app_connect_time
fromlibcurl
- Alias
body_str
tobody
andheader_str
tohead
- Setting
post_body
tonil
does not reset data posted inhttp(:GET)
- Various spurious/inconsequential warnings
Curl.head
usesOPTIONS
method instead ofHEAD
method
- Make "super simple API" more efficient by storing
Curl::Easy
instance 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::Multi
not actually performing HTTP requests in cases when the:max_connects >= number of requests
- Build error when compiled with
-Werror=format-security
postalize
parameter escaping
- Support
CURLINFO_REDIRECT_URL
- Support
CURLOPT_RESUME_FROM
inCurl::Easy
- Add
.status
toCurl::Easy
instances - Support
CURLOPT_FAILONERROR
- Add even easier interface:
Curl.get
/Curl.post
/ etc
on_failure
only fires for 5xx responses
- Error in README section for HTTP POST file upload.
- Add a default for
resolve_mode
toCURL_IPRESOLVE_WHATEVER
e.g.:auto
- Add
on_redirect
andon_missing
callbacks 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
=>StringValueCStr
change)
- Restore compatibility with 0.7.16 (e.g. suport for building without
CURLOPT_SEEKDATA
, etc) - Use
rb_thread_blocking_region
when available in place ofrb_thread_select
for 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_VERIFYPEER
to be overwritten by the value ofuse_netrc
setting
- Warn on exceptions in success/failure/complete callbacks
- Use
StringValueCStr
more instead of the less safeRSTRING_PTR
- Defaulting
CURLOPT_SSL_VERIFYHOST
to2
to 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