Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: algesten/ureq
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 3.4.0
Choose a base ref
...
head repository: algesten/ureq
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 3.4.1
Choose a head ref
  • 6 commits
  • 13 files changed
  • 4 contributors

Commits on Aug 23, 2026

  1. Buffer read_json into memory when Content-Length is below the limit (#…

    …1191)
    
    * Buffer read_json into memory when Content-Length is below the limit
    
    serde_json's from_reader parses the response one byte at a time, which is
    noticeably slower than parsing an in-memory slice. When the Content-Length
    signals the body comfortably fits within the read limit, buffer it into a Vec
    and parse with from_slice instead. A 1/3-of-limit cutoff keeps the buffered
    bytes plus the deserialized value within the configured memory budget, and
    chunked or oversized responses fall back to the existing streaming path.
    
    Closes #1151
    
    Co-authored-by: Chris (ChrisJr404) <11917633+ChrisJr404@users.noreply.github.com>
    Co-authored-by: Martin Algesten <martin@algesten.se>
    3 people authored Aug 23, 2026
    Configuration menu
    Copy the full SHA
    662410b View commit details
    Browse the repository at this point in the history
  2. Complete TLS handshakes while connecting (#1193)

    * Complete TLS handshakes while connecting
    
    Both TLS backends defer the handshake until the request is written, after
    the connection phase has already been recorded as complete. This puts the
    handshake under the request timeout instead of the connection timeout.
    Fixing phase-local deadline accounting would otherwise leave a
    connect-only configuration without a TLS handshake timeout.
    
    Complete each handshake in its connector using the connection timeout.
    Preserve native-tls transport errors and cover timeout propagation through
    both backends, including a successful handshake through a CONNECT tunnel.
    tamird authored Aug 23, 2026
    Configuration menu
    Copy the full SHA
    d480543 View commit details
    Browse the repository at this point in the history
  3. Anchor timeout budgets to phase boundaries (#1194)

    * Anchor timeout budgets to phase boundaries
    
    Each completed phase's deadline stayed in the set of timeouts checked by
    the phases after it, so for instance timeout_recv_response kept applying
    while the response body was read. The active phase also restarted its
    budget on every lookup, so repeated reads or writes renewed the
    timeout_send_body and timeout_recv_body budgets indefinitely.
    
    Anchor each phase's budget to the completion of its latest predecessor
    and check only that deadline together with the global and per-call
    deadlines. Fail in Connection when a budget has already expired, since
    transports cannot set a zero socket timeout and would otherwise grant a
    short grace period per call.
    
    Cover phase expiry, optional phase transitions and global/per-call
    accounting across redirects with clock-based tests, and add a regression
    test for an expired body budget that runs both through the test
    transport and over real TCP.
    tamird authored Aug 23, 2026
    Configuration menu
    Copy the full SHA
    5b81318 View commit details
    Browse the repository at this point in the history

Commits on Sep 6, 2026

  1. Do not pool a connection with unconsumed input (#1198)

    Connection::reuse probes the socket for bytes the server sent after
    the end of the body and drops the connection if it finds any. Harden
    that check by also checking the bytes already buffered. This is
    defense in-depth since connection pooling is bound by URL origin key,
    thus no cross contamination risk.
    algesten authored Sep 6, 2026
    Configuration menu
    Copy the full SHA
    9eb654c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    9559d7b View commit details
    Browse the repository at this point in the history
  3. 3.4.1

    algesten committed Sep 6, 2026
    Configuration menu
    Copy the full SHA
    cf4a3cd View commit details
    Browse the repository at this point in the history
Loading