Skip to content

Update OkHttp & Okio - #4850

Open
solrbot wants to merge 3 commits into
apache:mainfrom
solrbot:renovate/okhttp-and-okio
Open

Update OkHttp & Okio#4850
solrbot wants to merge 3 commits into
apache:mainfrom
solrbot:renovate/okhttp-and-okio

Conversation

@solrbot

@solrbot solrbot commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

This PR contains the following updates:

Package Type Update Change
com.squareup.okio:okio dependencies minor 3.17.03.18.1
com.squareup.okhttp3:okhttp-jvm (source) dependencies minor 5.4.05.5.0
com.squareup.okhttp3:okhttp (source) dependencies minor 5.4.05.5.0

Release Notes

lysine-dev/okio (com.squareup.okio:okio)

v3.18.1

2026-07-28

  • Fix: Restore binary-compatibility with Okio 3.17.x for Kotlin/Native users. When we introduced
    the new base64() function, we inadvertently changed the binary signature! Ugh! This is now
    fixed and we've automated binary-compatibility checking for Kotlin/Native going forward.

v3.18.0

2026-07-21

  • Fix: Use wide character APIs to better support of non-UTF-8 filesystems on Windows.
  • Fix: Don't crash in AssetFileSystem.exists() when the underlying storage throws a
    FileNotFoundException.
  • Fix: Load WASI paths relative to their preopen. The platform behavior recently changed in
    NodeJS, causing our WasiFileSystem to be unable to access files!
  • New: Optionally ignore whitespace when decoding hexadecimal.
  • New: Optionally omit padding when encoding Base64.
  • New: BufferedSource.readUInt(), BufferedSink.writeUInt(), and similar functions for UByte,
    UShort and ULong. Also add support for unsigned and little-endian.
  • New: BufferedSink.utf8Appendable(). Use this to adapt an Okio sink to an Appendable.
  • New: Source.limit() returns a wrapped source with a strict limit on how many bytes are
    returned.
  • New: ByteString.equals(other, constantTime) for subtle defense against timing attacks.
lysine-dev/okhttp (com.squareup.okhttp3:okhttp-jvm)

v5.5.0

2026-08-16

This release introduces opt-in support for [Encrypted Client Hello (ECH)]. This new feature
improves user privacy by encrypting domain names in transit. With regular TLS, your coffee shop’s
Wi-Fi router can see that you’re visiting wikipedia.com, but it cannot see which page you’re
looking at. With ECH, the router observes only the IP address. This additional privacy is most
effective on sites hosted by big CDNs because the IP address doesn’t imply a particular website.

This requires ECH support in the platform’s TLS stack. Today this is only Android 17 (API 37,
released June 2026). When other TLS stacks add ECH support, we'll integrate them.

ECH took a lot of work to implement because the encryption keys are published over DNS in the
[HTTPS resource record], and we needed to write new code to fetch these records. This release
includes a major update to OkHttp’s DNS API: it now supports multiple resource record types (not
just IP addresses!), asynchronous streaming results, and in-memory caching.

To opt in, you can use DnsOverHttps:

// DnsOverHttps itself uses OkHttpClient. Build both clients upon the
// same bootstrap client so they share a connection pool and dispatcher.
val bootstrapClient = OkHttpClient()

// This sample uses Cloudflare's 1.1.1.1 DnsOverHttps service.
val client = bootstrapClient.newBuilder()
  .dns(DnsOverHttps.Builder()
    .client(bootstrapClient)
    .url("https://1.1.1.1/dns-query".toHttpUrl())
    .build())
  .build()

You could also opt in with our new AndroidDns API. Unfortunately, the privacy benefits of ECH are
thwarted because its DNS queries are not encrypted by default.

// AndroidDns fetches the HTTPS DNS resource records necessary for ECH.
val client = OkHttpClient.Builder()
  .dns(AndroidDns())
  .build()
  • New: OkHttp artifacts are now signed with our [new signing key]. This project and three sibling
    projects ([Retrofit], [Okio], and [SQLDelight]) recently joined [the Commonhaus Foundation].
  • Fix: MockWebServer’s @StartStop annotation now supports @Nested JUnit 5 tests.
  • Fix: Our default TLS hostname verifier now reject hosts that fail IP canonicalization.
  • Fix: Closing a multipart part's sink no longer closes the entire request body.
  • Fix: Flush HTTP/1 request bodies before detaching the timeout. We had a bug where timeouts
    weren’t applied correctly.
  • Fix: Follow [RFC 1008]'s requirements for HTTP QUERY redirects.
  • Fix: Fall back to no proxy when the system proxy selector throws. Previously this would cause
    the HTTP call to crash.
  • Upgrade: [Okio 3.18.1][okio_3_18_1].

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • "before 9am on the first day of the month"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot

@solrbot solrbot added the exempt-stale Prevent a PR from going stale label Sep 1, 2026
@solrbot solrbot added this to the 10.x milestone Sep 1, 2026
@solrbot

solrbot commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator Author

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

⚠️ Warning: custom changes will be lost.

@epugh epugh self-assigned this Sep 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

admin-ui dependencies Dependency upgrades exempt-stale Prevent a PR from going stale module:jwt-auth tool:build

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants