Skip to content

Releases: imroc/req

v3.59.0 Release

Choose a tag to compare

@imroc imroc released this 02 Jul 06:00
57c9644

Breaking Changes

  • Go 1.25+ required β€” quic-go v0.60.0 drops Go 1.24 support. The go directive in go.mod is now 1.25.0, and CI tests against Go 1.25.x and 1.26.x. Users on Go 1.24 should stay on v3.58.0.

Dependencies

  • Port quic-go v0.60.0 β€” full sync of all http3 changes from quic-go v0.59.0 β†’ v0.60.0 into req's vendored internal/http3/:
    • Fix QuaterStreamID β†’ QuarterStreamID field rename in qlog DatagramCreated / DatagramParsed (compile error with quic-go v0.60.0). Fixes #500.
    • Extract validateHeaderFieldNameAndValue, validateRegularHeaderField, validateTrailerHeaderField helper functions in headers.go
    • parseTrailers: add sizeLimit parameter with per-field size accounting and errHeaderTooLarge check
    • Add validExtendedConnectProtocol function (RFC 9220) and validate extended CONNECT :protocol in request_writer.go
    • Use strings.SplitSeq in extractAnnouncedTrailers

v3.58.0 Release

Choose a tag to compare

@imroc imroc released this 01 Jul 14:20

New Features

  • Add SetTLSFingerprintSpec for custom ClientHelloSpec support β€” accepts a *utls.ClientHelloSpec for fine-grained TLS fingerprint customization (JA3/JA4). Closes #477, #478.
  • Add SensitiveHeadersRedirectPolicy β€” strips custom auth headers (e.g. X-API-Key, X-Auth-Token) on cross-domain redirects to prevent credential leakage (CWE-200). Fixes #489.
  • Port quic-go v0.59.0 β€” aligns with quic-go v0.59.0 breaking changes: removes deprecated ConnectionTracingID/ConnectionTracingKey, removes stream hijacking API, replaces handleUnidirectionalStreams with per-stream callback, adds RawClientConn for fine-grained stream control, adds HandleBidirectionalStream (closes conn per RFC 9114), fixes SupportsDatagrams β†’ SupportsDatagrams.Remote. Fixes #482.

Bug Fixes

  • Unmarshal returns error on error status codes β€” now checks IsErrorState() before deserializing, preventing 4xx/5xx response bodies from being deserialized into target structs. Closes #465.
  • Retry on GOAWAY errors with cached HTTP/2 connections β€” RoundTripOnlyCachedConn now falls through to create a new connection instead of returning errClientConnGotGoAway directly. Closes #491.
  • SetCookieJarFactory returns http.CookieJar interface β€” changes return type from *cookiejar.Jar to http.CookieJar, allowing custom cookie jar implementations. Closes #415.
  • Add application/json to Chrome impersonate accept header β€” matches Chrome's actual accept header for API requests expecting JSON. Closes #471.

Dependencies

  • Upgrade utls to v1.8.2 β€” security update from v1.8.1. Addresses #459.

Tests

  • Add comprehensive unit tests for HTTP/3 frames, headers, transport, and dump.
  • Add automated test gate infrastructure.

v3.57.0 Release

Choose a tag to compare

@imroc imroc released this 16 Dec 09:07
  • Update go modules.
  • Port quic-go v0.57.1 (fix #474)

v3.56.0 Release

Choose a tag to compare

@imroc imroc released this 13 Nov 04:25
  • Update go modules
  • Port quic-go v0.56.0

v3.55.0 Release

Choose a tag to compare

@imroc imroc released this 08 Sep 05:41
  • Fix ResultState()documentation to clarify ResultState logic (#463)
  • feat: add SetQueryParamsFromValues and SetQueryParamsFromStruct methods (#462)

v3.54.2 Release

Choose a tag to compare

@imroc imroc released this 23 Aug 04:51
  • Replace go-multierror with errors.Join (#458)

v3.54.1 Release

Choose a tag to compare

@imroc imroc released this 19 Aug 02:08
  • Fix data race condition in the Alt-Svc cache(#456)

v3.54.0 Release

Choose a tag to compare

@imroc imroc released this 27 Jun 06:37
  • support quic-go 0.53.0

v3.53.0 Release

Choose a tag to compare

@imroc imroc released this 20 Jun 06:59
  • Upgrade all dependencies to the latest stable version.
  • Port quic-go's latest stable version's logic.
  • Now it requires go1.24+.
  • README: Add Go Version Compatibility Matrix

v3.52.2 Release

Choose a tag to compare

@imroc imroc released this 26 May 11:39

add Do func for client (compatible with http.Client.Do)