Skip to content

Latest commit

 

History

History
272 lines (245 loc) · 11.4 KB

ChangeLog.md

File metadata and controls

272 lines (245 loc) · 11.4 KB

Change Log

1.0.6

  • Fix for PUT request length calculation
    • see: #451
  • Fix a double quote issue when evaluating cert's path
    • see: #454

1.0.5

  • Add shorter response_code alias -> code
      Curl.get("https://github.com/taf2/curb").code # -> 200
    

1.0.4

  • Improve exception handling from callback functions to ensure correct error line number is reported
  • Resolve many compiler warnings

1.0.3

  • Adjust how we handle exceptions to handle more cases

1.0.2

  • Address alloc function T_DATA see: https://bugs.ruby-lang.org/issues/18007
  • Add CURLOPT_PROXY_SSL_VERIFYHOST support
  • Fix for exception handling in non standard callback functions on_redirect, on_complete
  • Fix missing response code when using Curl::Multi.http with a block
  • Fix to ensure redirect handler is called even when follow location is true

1.0.1

  • Fix nested Curl.get/post inside of a block
      r1 = Curl.get("http://example.com/1") {|http|
        r2 = Curl.get("http://example.com/2") {|h|
        }
      }
      r1.body # previously was r2's body... this is now fixed
  • Restore compatibility with older libcurl installs
  • Correctly set empty headers e.g. http.headers['Accept'] = '' # to remove the header from the request

1.0.0

  • Add Ruby 3.1 to tests
  • Support curlopt_protocols and curlopt_redir_protocols.
  • Improved error handling via last_error tracking
  • Added support for CURLOPT_RANGE

0.9.11

  • Fixes for haproxy protocol via CURLOPT_HAPROXYPROTOCOL
  • Ensure dev environments don't use older versions of rake when working on curb (not a production dependency)
  • Many readmen updates - more windows support documentation
  • Support added for CURLOPT_STDERR

0.9.8

Fixes

  • Fix build with curl 7.62.0
  • Support building against Ruby 1.8 to help people migrate to the future and beyond

Enhancements

  • Improve timeout= to allow Floating point values which will automatically switch to timeout_ms
  • Add SOCKS5_HOSTNAME support
  • Added 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

Breaking Changes

  • Request handling reduces C (lines of code), and might resolve segfault when mixing curb with ruby timeout
  • Timeout change for anyone who expected 0.9 to equal 0 or infinity

0.9.7

Breaking Changes

Fixes

Enhancements

0.9.4

Fixes

Enhancements

  • Add PATCH support?
  • Add support for CURLOPT_PATH_AS_IS
  • Add .cookielist method to Curb::Easy
  • Improved Windows compatibility

0.9.3

Fixes

  • Correctly check for constants that may not be present in older versions of Curl

0.9.2

  • Breaking change - Change base class for exceptions from Exception to StandardError

Fixes

Enhancements

  • 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

0.9.1

Fixes

  • Fix regression in timeout/timeout_ms handling

0.9.0

Fixes

  • 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

0.8.9

Fixes

Enhancements

  • Add Curl::HTTP_2_0, and Curl.http2?
  • Support CURLOPT_UNIX_SOCKET_PATH in Curl::Easy
  • Add timeout_ms/connect_timeout_ms options
  • Add on_redirect callback handling to .http

0.8.8

Fixes

0.8.7

Breaking Changes

Fixes

  • 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 of rb_thread_select)

Enhancements

  • Add SOCKS4A support
  • Allow custom ssl cipher lists
  • Add install instructions for Windows
  • Make it possible easily reset the Thread current handle (Curl.reset)

0.8.6

Breaking Changes

Fixes

  • Add support 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

Enhancements

  • Support Ruby 2.2.0
  • Support CURLOPT_TCP_NODELAY in Curl::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

0.8.5

Fixes

  • Guard against a curl without GSSAPI delegation compiled in
  • Added extconf.rb entry for appconnect
  • Reset handle before each call when using "super simple API"

Enhancements

  • Added support for app_connect_time from libcurl
  • Alias body_str to body and header_str to head

0.8.4

Fixes

Enhancements

  • Make "super simple API" more efficient by storing Curl::Easy instance in Thread.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

0.8.3

Fixes

0.8.2

Fixes

  • Clang compatibility

Enhancements

  • Allow string data with simpler interface e.g. Curl.post('...', 'data')

0.8.1

Fixes

  • 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

Enhancements

  • Support CURLINFO_REDIRECT_URL
  • Support CURLOPT_RESUME_FROM in Curl::Easy
  • Add .status to Curl::Easy instances
  • Support CURLOPT_FAILONERROR
  • Add even easier interface: Curl.get / Curl.post / e.t.c

0.8.0

  • Breaking change - on_failure only fires for 5xx responses

Fixes

  • Error in README section for HTTP POST file upload.

Enhancements

  • Add a default for resolve_mode to CURL_IPRESOLVE_WHATEVER e.g. :auto
  • Add on_redirect and on_missing callbacks for 3xx/4xx responses
  • Allow http_post(array_of_fields) when using multipart form posts

0.7.18

Fixes

  • 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)

0.7.17

Fixes

  • Restore compatibility with 0.7.16 (e.g. suport for building without CURLOPT_SEEKDATA, etc)
  • Use rb_thread_blocking_region when available in place of rb_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 of use_netrc setting

Enhancements

  • Warn on exceptions in success/failure/complete callbacks
  • Use StringValueCStr more instead of the less safe RSTRING_PTR
  • Defaulting CURLOPT_SSL_VERIFYHOST to 2 to make it consistent with cURLs default value

0.7.16

  • Add better support for timeouts - issue 48
  • Improve stability, 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 garbage 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

0.7.7

  • Curl::Multi perform is more robust process callbacks before exiting the loop - issue 24. Thanks to igrigorik and ramsingla
  • improve Curl::Multi idle callback robustness, trigger callbacks more often - issue 24. Thanks to igrigorik and ramsingla

0.7.6

  • 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

0.7.5

  • minor fix for no signal instead of INT2FIX Check boolean value

0.7.4

  • add support to set the http version e.g. easy.version = Curl::HTTP_1_1
  • add support to disable libcurls internal use of signals.

0.7.3

  • Support rubinius
  • allow Multi.download to be called without a block
  • add additional Multi.download examples

0.7.2

  • 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