Commit Graph

7593 Commits

Author SHA1 Message Date
Jamil
3029e00355 fix(android): fix view state lifecycle around tunnel/auth (#9621)
`onViewCreated()` is called when the view initializes, and then
`onResume()` is called right after, in addition to anytime the view is
shown again.

To prevent showing the VPN permission activity twice, we remove the
`checkTunnelState()` from onViewCreated, allowing only `onResume()` to
call it.

A boolean flag is added to track whether this is the "first" launch of
the app in order to determine whether to `connectOnStart`.

Fixes #9584

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
2025-06-22 16:20:11 +00:00
Jamil
867f9dfad3 fix(ci): set github token for publish workflow (#9620)
This env var needs to be explicitly set.

Related: #9618
2025-06-21 20:37:38 -07:00
Jamil
e970e3f15a fix(ci): split newline correctly in github workflow file (#9619)
GitHub doesn't like this syntax.

Related: #9618
2025-06-21 20:26:02 -07:00
Jamil
2e065d6719 fix(ci): use publish inputs directly (#9618)
We can't use job outputs in the job specification for a subsequent
workflow.

Related: #9617
2025-06-21 20:22:41 -07:00
Jamil
cb4441eafa fix(ci): publish sha of images from release (#9617)
To publish retroactively artifacts for the gateway and headless client,
we need to pull the sha of the corresponding release tag.

Related: #9615
2025-06-21 20:18:01 -07:00
Jamil
3baefd0fcf fix(ci): remove unused id from step in publish (#9616)
This isn't a valid name and can be removed anyway.

Related: #9615
2025-06-21 19:47:16 -07:00
Jamil
2598df3030 feat(ci): allow publish workflow to be run manually (#9615)
This allows us to retroactively run publish workflows that may have
failed due to workflow bugs.

Needed to publish the 1.4.11 gateway image.
2025-06-21 19:44:34 -07:00
Jamil
c783b23bae refactor(portal): rename conditional->manual (#9612)
These only have one condition - to run manually. `manual migrations`
better implies that these migrations _must_ typically be run manually.
2025-06-21 21:17:33 +00:00
Thomas Eizinger
a2c122a3c0 refactor(apple): use guard for checking valid handle (#9614)
Follow-up to #9597
2025-06-21 21:17:01 +00:00
Jamil
2523bedd19 fix(portal): add if not exists to concurrent index (#9611)
With `@disable_ddl_transaction` this needs to be added.

See
https://firezonehq.slack.com/archives/C04HRQTFY0Z/p1750516438992329?thread_ts=1750510766.640919&cid=C04HRQTFY0Z
2025-06-21 15:42:51 +00:00
Jamil
e113def903 fix(portal): flush metrics buffer before exceeding limit (#9608)
Instead of checking for buffer surpass _after_ adding new timeseries to
it, we should check before.

Variables were renamed to be a little more clear on what they represent.
2025-06-20 21:44:52 +00:00
Jamil
a1677494b5 chore(portal): drop index concurrently (#9609)
Looks like postgres does support this, so adding for good measure.
2025-06-20 14:55:23 -07:00
Jamil
975057f9b4 fix(portal): add account_id,type index on actors (#9607)
`Repo.aggregate(:count)` which performs a `COUNT(*)` query should be
relatively fast if it's able to do an index-only scan. For that to
happen we need to ensure all of the fields in the WHERE clause are
indexed. Currently, we're missing an index on `actors.type` so a full
row scan is executed per account each time we calculate Billing limits,
every 5 minutes, for all accounts.

If we need to check these limits more often and/or our data grows in
size, it could be worth moving these to a limits counter field on
`accounts` which is maintained via INSERT/DELETE triggers.

Related:
https://firezone-inc.sentry.io/issues/6346235615/events/588a61860e0b4875a5dbe8531dbb806a/?project=4508756715569152&referrer=next-event
2025-06-20 20:53:09 +00:00
Jamil
6f87f5ea2c fix(portal): use account_id in index for agm hook (#9606)
When reacting to `ActorGroupMembership` updates, we were issuing a query
to expire Flows given an `actor_id, actor_group_id` combination.

Unfortunately, this query never included an `account_id` to scope it,
causing a table scan of flows and associated join tables to resolve it.

To fix this, we introduce the `account_id` and ensure the expire flows
uses this field to ensure only data for an account is considered in the
query.

Related:
https://firezone-inc.sentry.io/issues/6346235615/events/e225e1c488cb4ea3896649aabd529c50
2025-06-20 20:40:31 +00:00
Jamil
ddb3dc8ce0 refactor(portal): compile_config macro to env_var_to_config (#9605)
The `compile_config` macro only works on environment and DB variables.
This caused recent confusion when determining where `database_pool_size`
was coming from.

To fix this issue, we rename `compile_config` to be more clear.

We also remove the technical debt around supporting "legacy keys" and
DB-based configuration.

The configuration compiler now works exclusively on environment
variables only, where it is still useful for:

- Casting environment variables to their expected type
- Alerting us when one is missing that should be set
2025-06-20 20:39:06 +00:00
Brian Manifold
5bd5a7f6ad fix(portal): trim whitespace in auth provider forms (#9587)
Why:

* We recently had an issue where a space was entered into a provider
form field and caused our system to not be able to authenticate the
admin when setting up the auth provider and directory sync. To mitigate
this moving forward we are making sure all white space is trimmed in the
form fields. This commit focuses on the form fields for the auth
providers.

related: #9579
2025-06-20 18:44:33 +00:00
Thomas Eizinger
fccf5021e6 fix(relay): don't fail event-loop on interrupt (#9592)
When profiling the relay, certain syscalls may get interrupted by the
kernel. At present, this crashes the relay which makes profiling
impossible.

Co-authored-by: Antoine Labarussias <antoinelabarussias@gmail.com>
2025-06-20 18:42:57 +00:00
Jamil
ea0616e198 chore(apple): ignore generated swift bridge files (#9599)
Rust and Swift disagree about the formatting of these, leading to
constant git file dirtiness when working on Apple code.

These were originally added when we didn't have as much automation to
regeneration these on each build.
2025-06-20 18:40:48 +00:00
Jamil
5537b8cfe7 fix(apple): ensure log file exists before writing to it (#9597)
Similar to the issue for the gui clients, the log file handle needs to
be able to be rolled over after logs are cleared.

related: #6850
2025-06-20 17:03:59 +00:00
Jamil
fc3a9d17b9 fix(portal): broadcast before possible query errors out (#9601)
When handling some side effects, if the query fails for whatever reason,
we don't want these preventing handling side effects.

Related:
https://firezone-inc.sentry.io/issues/6346235615/events/d30d222f8a3e436d8058a54c0b2a508c/?project=4508756715569152&query=is%3Aunresolved&referrer=previous-event&stream_index=3
2025-06-20 17:03:42 +00:00
Jamil
6f2cdbdccb fix(ci): use release-tag override for winget-releaser (#9596) 2025-06-20 06:29:02 -07:00
Jamil
58e6c3d4c3 feat(ci): allow winget publish to be run manually (#9588)
- Updates winget publish workflow to be run manually to re-run it after
fixes
- Adds write permissions to the workflow
2025-06-20 07:43:33 +00:00
Jamil
081b075f2c chore: bump gui, apple, gateway (#9586)
The new publish automation still [has some
kinks](https://github.com/firezone/firezone/actions/runs/15764891111) so
publishing this manually.
2025-06-19 12:29:46 -07:00
Jamil
e5a0bdc3b1 fix(portal): ensure sentry reports conditional migrations (#9582)
Sentry isn't started when this runs, so start it and manually capture a
message to ensure we're reminded about pending conditional migrations.

Verified that this works with the Release script.
2025-06-19 17:28:38 +00:00
Jamil
f50fa95778 fix(ci): lock xcode major (#9585)
Apple won't allow apps built with Xcode betas to be reviewed.

<img width="1146" alt="Screenshot 2025-06-19 at 9 04 17 AM"
src="https://github.com/user-attachments/assets/11470f04-603b-4c5c-aad2-fba0e4eb391a"
/>
2025-06-19 09:21:58 -07:00
Thomas Eizinger
47befe37f4 fix(apple): disable false-positive "App hang" reports (#9568)
As recommended by the Sentry team [0], "App hang" tracking should be
disabled before calling into certain system APIs like showing alerts to
prevent false-positives.

[0]: https://github.com/getsentry/sentry-cocoa/issues/3472
2025-06-18 22:44:03 +00:00
Thomas Eizinger
bb46c59f1d chore(apple): add .swift-format file (#9566)
When using alternative editors other than Xcode, Intellisense is usually
provided by `sourcekit-lsp`. The LSP server also uses `swift-format`
under the hood to format the code but appears to default to using 4
spaces for indentation. In order to standardise on how much indentation
is used, we add a `.swift-format` file that specifies is.
2025-06-18 22:40:58 +00:00
Jamil
2d6e478a44 fix(portal): check conditional migrations with repo started (#9577)
In #9562, we introduced a bug where the pending conditional migrations
check was run without the repo being started. Wrapping it with
`with_repo` fixes that.
2025-06-18 22:40:24 +00:00
Jamil
e0299c688c fix(ci): don't install unused packages for android builds (#9576)
The runner doing the Android builds is running out of disk space. Since
we don't use the emulator, adb, or other tools for the build, we can
save some space by not installing these.

Related: https://github.com/firezone/firezone/actions/runs/15742063800
2025-06-18 22:40:16 +00:00
Thomas Eizinger
c8a4a20818 feat(snownet): increase ICE timeout (#9569)
Some of our users are facing issues on what looks to be very unreliable
network connections. At present, we consider a connection dead if we
don't receive a response within 9.25 seconds. Cutting a connection and
re-establishing it _should_ not be a problem in general and TCP
connections happening through Firezone should resume gracefully. Further
work on whether that is actually the case is due in #9531. Until then,
we increase the ICE timeout to ~15s.

Related: #9526
2025-06-18 22:16:32 +00:00
Jamil
6cd077cd18 feat(portal): populate otel resource attributes (#9574)
If the otel collector runs on a different node from the elixir apps,
these won't be set anymore.

Luckily, all of the info we need is already in the application's env, so
we can simply copy them over to the needed attributes.

Related: https://github.com/firezone/infra/pull/47
Related:
https://github.com/firezone/infra/pull/47#discussion_r2149291472
Related:
https://opentelemetry.io/docs/languages/erlang/resources/#adding-resources-with-os-and-otp-application-environment-variables
Related: https://opentelemetry.io/docs/specs/semconv/resource/#service
2025-06-18 19:26:10 +00:00
Jamil
0f60954652 chore(website): remove team section (#9571) 2025-06-18 12:30:07 -07:00
Jamil
1856749d1b fix(ci): download iOS SDK explicitly (#9572)
The runners don't seem to have this installed any longer by default.

Related:
https://github.com/actions/runner-images/issues/12355#issuecomment-2977352487
2025-06-18 19:22:17 +00:00
Jamil
236c21111a refactor(portal): don't rely on db to gate metric reporting (#9565)
This table was added to try and gate the request rate to Google's
Metrics API.

However, this was a flawed endeavor as we later discovered that the time
series points need to be spaced apart at least 5s, not the API requests
themselves.

This PR gets rid of the table and therefore the problematic DB query
which is timing out quite often due to the contention involved in 12
elixir nodes trying to grab a lock every 5s.

Related: #9539 
Related:
https://firezone-inc.sentry.io/issues/6346235615/?project=4508756715569152&query=is%3Aunresolved&referrer=issue-stream&stream_index=1
2025-06-18 18:40:33 +00:00
Jamil
a20989a819 feat(portal): conditional migrations on prod (#9562)
Some migrations take a long time to run because they require locks or
modify large amounts of data. To prevent this from causing issues during
deploy, we leverage Ecto's native support for loading migrations from
multiple directories to introduce a `conditional_migrations/` directory
that houses any conditional migrations we want to run.

To run these migrations, you'll need to do one of the following:

- `dev, test`: The `mix ecto.migrate` will run them by default because
we have aliased this to load conditional_migrations for dev
- `prod`: Set the `RUN_CONDITIONAL_MIGRATIONS` env var to `true` before
starting a prod server using the `bin/migrate` script.
- `dev, test, prod`: Run `Domain.Release.migrate(conditional: true)`
from an IEx shell.

If conditional migrations were found that weren't executed during
`Domain.Release.migrate`, a warning is logged to remind us to run them.

---------

Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
2025-06-18 18:08:25 +00:00
Thomas Eizinger
650cf893ba feat(snownet): decrease idle connection ICE timeout (#9570)
Any well-behaved NAT should keep the port mappings of an established UDP
connection open for 120s, even without seeing any traffic. Not all NATs
in the wild are well-behaved though and a discarded port mapping causes
connectivity loss for customers.

To combat these situations, we decrease the timer for STUN probes on
idle connections from 60s to 25s.

Related: #9526
2025-06-18 16:53:26 +00:00
Thomas Eizinger
bc854e1f9a ci: automatically create PR after publishing release (#9556)
To make releases even more smoother, this PR creates a bit of automation
that automatically bumps the versions in the `scripts/bump-versions.sh`
script and opens a PR for it.
2025-06-18 06:17:18 +00:00
dependabot[bot]
68379bf9e3 build(deps): bump clap from 4.5.39 to 4.5.40 in /rust (#9544)
Bumps [clap](https://github.com/clap-rs/clap) from 4.5.39 to 4.5.40.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/clap-rs/clap/blob/master/CHANGELOG.md">clap's
changelog</a>.</em></p>
<blockquote>
<h2>[4.5.40] - 2025-06-09</h2>
<h3>Features</h3>
<ul>
<li>Support quoted ids in <code>arg!()</code> macro (e.g.
<code>arg!(&quot;check-config&quot;: ...)</code>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="cff27dbf57"><code>cff27db</code></a>
chore: Release</li>
<li><a
href="4ef41249f1"><code>4ef4124</code></a>
docs: Update changelog</li>
<li><a
href="ca896175c1"><code>ca89617</code></a>
Merge pull request <a
href="https://redirect.github.com/clap-rs/clap/issues/5848">#5848</a>
from jennings/jennings/push-xolwzyoornps</li>
<li><a
href="99b6391ee9"><code>99b6391</code></a>
fix(complete): Fix PowerShell dynamic completion</li>
<li>See full diff in <a
href="https://github.com/clap-rs/clap/compare/clap_complete-v4.5.39...clap_complete-v4.5.40">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=clap&package-manager=cargo&previous-version=4.5.39&new-version=4.5.40)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-18 05:03:54 +00:00
Thomas Eizinger
d3ff59ab84 chore(rust): bump str0m (#9564)
The recent changes to str0m include a bug fix for network constellations
where both peers are behind symmetric NAT and therefore need a
relay-relay candidate pair to succeed. In the current version, such
candidate pairs would erroneously be rejected as redundant with host
candidates.

Fixes: #9514
2025-06-17 22:04:13 +00:00
Thomas Eizinger
faeb958882 refactor: use UniFFI for Android FFI (#9415)
To make our FFI layer between Android and Rust safer, we adopt the
UniFFI tool from Mozilla. UniFFI allows us to create a dedicated crate
(here `client-ffi`) that contains Rust structs annotated with various
attributes. These macros then generate code at compile time that is
built into the shared object. Using a dedicated CLI from the UniFFI
project, we can then generate Kotlin bindings from this shared object.

The primary motivation for this effort is memory safety across the FFI
boundary. Most importantly, we want to ensure that:

- The session pointer is not used after it has been free'd
- Disconnecting the session frees the pointer
- Freeing the session does not happen as part of a callback as that
triggers a cyclic dependency on the Rust side (callbacks are executed on
a runtime and that runtime is dropped as part of dropping the session)

To achieve all of these goals, we move away from callbacks altogether.
UniFFI has great support for async functions. We leverage this support
to expose a `suspend fn` to Android that returns `Event`s. These events
map to the current callback functions. Internally, these events are read
from a channel with a capacity of 1000 events. It is therefore not very
time-critical that the app reads from this channel. `connlib` will
happily continue even if the channel is full. 1000 events should be more
than sufficient though in case the host app cannot immediately process
them. We don't send events very often after all.

This event-based design has major advantages: It allows us to make use
of `AutoCloseable` on the Kotlin side, meaning the `session` pointer is
only ever accessed as part of a `use` block and automatically closed
(and therefore free'd) at the end of the block.

To communicate with the session, we introduce a `TunnelCommand` which
represents all actions that the host app can send to `connlib`. These
are passed through a channel to the `suspend fn` which continuously
listens for events and commands.

Resolves: #9499
Related: #3959

---------

Signed-off-by: Thomas Eizinger <thomas@eizinger.io>
Co-authored-by: Jamil Bou Kheir <jamilbk@users.noreply.github.com>
2025-06-17 21:48:34 +00:00
Thomas Eizinger
f3dcd06115 chore(snownet): document current ICE timeouts with tests (#9558)
This ensures we always know, what the ICE timeouts of the agent are.
With the backoff implemented in the agent, it is not trivial to compute
this from the input parameters.
2025-06-17 21:38:08 +00:00
Thomas Eizinger
92f8c8820f chore(gui-client): configure eslint (#9550)
Resolves: #9546
2025-06-17 20:46:39 +00:00
Jamil
38471738aa fix(portal): fix problem_nodes removal (#9561)
The shape of this from libcluster is `[:"NODE_NAME": connected_bool?]`
so we need to extract the first element of each item before using this
var.

This is just for logging and doesn't affect how we actually connect to
nodes.
2025-06-17 16:53:42 +00:00
Brian Manifold
e5914af50f fix(portal): Add more logging around OIDC setup (#9555)
Why:

* Adding some simple logging around OIDC calls to help with better
debugging.
* Removing the `opentelemetry_liveview` package as it has been pulled in
to the `opentelemetry_phoenix` package that we are already using.
2025-06-17 16:52:33 +00:00
Thomas Eizinger
43db1e63e2 chore(telemetry): rate limit identical events to 1 per 5min (#9551)
It is in the nature of our application that errors may occur in rapid
succession if anything in the packet processing path fails. Most of the
time, these repeated errors don't add any additional information so
reporting one of them to Sentry is more than enough.

To achieve this, we add a `before_send` callback that utilizes a
concurrent cache with an upper bound of 10000 items and a TTL of 5
minutes. In other words, if we have submitted an event to Sentry that
had the exact same message in the last 5 minutes, we will not send it.

Internally, `moka` uses a concurrent hash map and therefore, the key is
hashed and not actually stored. Hash codes are u64, meaning the memory
footprint of this cache is only ~ 64kb (not accounting for constant
overhead of the cache internals).
2025-06-17 16:48:48 +00:00
Thomas Eizinger
cc50d58d8c chore(client,gateway): log portal connection hiccups on INFO (#9557)
These don't happen very often so are safe to log on INFO. That is the
default log level and it is useful to see, why we are re-connecting to
the portal.
2025-06-17 14:01:34 +00:00
Jamil
9701cfca0f chore: publish gui 1.5.3 (#9547) 2025-06-17 10:04:04 +00:00
Thomas Eizinger
a06f270c7d chore(apple): un-format generated code (#9549)
It appears that the code generation in our `build.rs` generates the code
with different formatting and this therefore constantly shows up as
untracked changes in my editor.
2025-06-16 20:06:36 +00:00
dependabot[bot]
3ef9b4334e build(deps): bump libc from 0.2.172 to 0.2.173 in /rust (#9543)
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.172 to 0.2.173.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/libc/releases">libc's
releases</a>.</em></p>
<blockquote>
<h2>0.2.173</h2>
<h3>Added</h3>
<ul>
<li>AIX: Add an AIX triple to Cargo.toml for doc (<a
href="https://redirect.github.com/rust-lang/libc/pull/4475">#4475</a>)</li>
<li>FreeBSD: Add the <code>SO_SPLICE</code> socket option support for
FreeBSD &gt;= 14.2 (<a
href="https://redirect.github.com/rust-lang/libc/pull/4451">#4451</a>)</li>
<li>Linux GNU: Prepare for supporting <code>_TIME_BITS=64</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4433">#4433</a>)</li>
<li>Linux: Add constant PACKET_IGNORE_OUTGOING (<a
href="https://redirect.github.com/rust-lang/libc/pull/4319">#4319</a>)</li>
<li>Linux: Add constants and types for <code>nsfs</code> ioctls (<a
href="https://redirect.github.com/rust-lang/libc/pull/4436">#4436</a>)</li>
<li>Linux: Add constants for Memory-Deny-Write-Execute
<code>prctls</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4400">#4400</a>)</li>
<li>Linux: Add constants from <code>linux/cn_proc.h</code> and
<code>linux/connector.h</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4434">#4434</a>)</li>
<li>Linux: Add new flags for <code>pwritev2</code> and
<code>preadv2</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4452">#4452</a>)</li>
<li>Linux: Add pid_type enum values (<a
href="https://redirect.github.com/rust-lang/libc/pull/4403">#4403</a>)</li>
<li>Linux: Update pidfd constants and types (Linux 6.9-6.15) (<a
href="https://redirect.github.com/rust-lang/libc/pull/4402">#4402</a>)</li>
<li>Loongarch64 musl: Define the <code>MADV_SOFT_OFFLINE</code> constant
(<a
href="https://redirect.github.com/rust-lang/libc/pull/4448">#4448</a>)</li>
<li>Musl: Add new fields since 1.2.0/1.2.2 to <code>struct
tcp_info</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
<li>Musl: Prepare for supporting v1.2.3 (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
<li>NuttX: Add <code>arc4random</code> and <code>arc4random_buf</code>
(<a
href="https://redirect.github.com/rust-lang/libc/pull/4464">#4464</a>)</li>
<li>RISC-V Musl: Add <code>MADV_SOFT_OFFLINE</code> definition (<a
href="https://redirect.github.com/rust-lang/libc/pull/4447">#4447</a>)</li>
<li>Redox: Define SCM_RIGHTS (<a
href="https://redirect.github.com/rust-lang/libc/pull/4440">#4440</a>)</li>
<li>VxWorks: Add missing UTIME defines and TASK_RENAME_LENGTH (<a
href="https://redirect.github.com/rust-lang/libc/pull/4407">#4407</a>)</li>
<li>Windows: Add more <code>time.h</code> functions (<a
href="https://redirect.github.com/rust-lang/libc/pull/4427">#4427</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Redox: Update <code>SA_</code> constants. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4426">#4426</a>)</li>
<li>Redox: make <code>CMSG_ALIGN</code>, <code>CMSG_LEN</code>, and
<code>CMSG_SPACE</code> const functions (<a
href="https://redirect.github.com/rust-lang/libc/pull/4441">#4441</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>AIX: Enable libc-test and fix definitions/declarations. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4450">#4450</a>)</li>
<li>Emscripten: Fix querying emcc on windows (use emcc.bat) (<a
href="https://redirect.github.com/rust-lang/libc/pull/4248">#4248</a>)</li>
<li>Hurd: Fix build from missing <code>fpos_t</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4472">#4472</a>)</li>
<li>Loongarch64 Musl: Fix the <code>struct ipc_perm</code> bindings (<a
href="https://redirect.github.com/rust-lang/libc/pull/4384">#4384</a>)</li>
<li>Musl: Fix the <code>O_LARGEFILE</code> constant value. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-lang/libc/blob/0.2.173/CHANGELOG.md">libc's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/rust-lang/libc/compare/0.2.172...0.2.173">0.2.173</a>
- 2025-06-09</h2>
<h3>Added</h3>
<ul>
<li>AIX: Add an AIX triple to Cargo.toml for doc (<a
href="https://redirect.github.com/rust-lang/libc/pull/4475">#4475</a>)</li>
<li>FreeBSD: Add the <code>SO_SPLICE</code> socket option support for
FreeBSD &gt;= 14.2 (<a
href="https://redirect.github.com/rust-lang/libc/pull/4451">#4451</a>)</li>
<li>Linux GNU: Prepare for supporting <code>_TIME_BITS=64</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4433">#4433</a>)</li>
<li>Linux: Add constant PACKET_IGNORE_OUTGOING (<a
href="https://redirect.github.com/rust-lang/libc/pull/4319">#4319</a>)</li>
<li>Linux: Add constants and types for <code>nsfs</code> ioctls (<a
href="https://redirect.github.com/rust-lang/libc/pull/4436">#4436</a>)</li>
<li>Linux: Add constants for Memory-Deny-Write-Execute
<code>prctls</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4400">#4400</a>)</li>
<li>Linux: Add constants from <code>linux/cn_proc.h</code> and
<code>linux/connector.h</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4434">#4434</a>)</li>
<li>Linux: Add new flags for <code>pwritev2</code> and
<code>preadv2</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4452">#4452</a>)</li>
<li>Linux: Add pid_type enum values (<a
href="https://redirect.github.com/rust-lang/libc/pull/4403">#4403</a>)</li>
<li>Linux: Update pidfd constants and types (Linux 6.9-6.15) (<a
href="https://redirect.github.com/rust-lang/libc/pull/4402">#4402</a>)</li>
<li>Loongarch64 musl: Define the <code>MADV_SOFT_OFFLINE</code> constant
(<a
href="https://redirect.github.com/rust-lang/libc/pull/4448">#4448</a>)</li>
<li>Musl: Add new fields since 1.2.0/1.2.2 to <code>struct
tcp_info</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
<li>Musl: Prepare for supporting v1.2.3 (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
<li>NuttX: Add <code>arc4random</code> and <code>arc4random_buf</code>
(<a
href="https://redirect.github.com/rust-lang/libc/pull/4464">#4464</a>)</li>
<li>RISC-V Musl: Add <code>MADV_SOFT_OFFLINE</code> definition (<a
href="https://redirect.github.com/rust-lang/libc/pull/4447">#4447</a>)</li>
<li>Redox: Define SCM_RIGHTS (<a
href="https://redirect.github.com/rust-lang/libc/pull/4440">#4440</a>)</li>
<li>VxWorks: Add missing UTIME defines and TASK_RENAME_LENGTH (<a
href="https://redirect.github.com/rust-lang/libc/pull/4407">#4407</a>)</li>
<li>Windows: Add more <code>time.h</code> functions (<a
href="https://redirect.github.com/rust-lang/libc/pull/4427">#4427</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Redox: Update <code>SA_</code> constants. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4426">#4426</a>)</li>
<li>Redox: make <code>CMSG_ALIGN</code>, <code>CMSG_LEN</code>, and
<code>CMSG_SPACE</code> const functions (<a
href="https://redirect.github.com/rust-lang/libc/pull/4441">#4441</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>AIX: Enable libc-test and fix definitions/declarations. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4450">#4450</a>)</li>
<li>Emscripten: Fix querying emcc on windows (use emcc.bat) (<a
href="https://redirect.github.com/rust-lang/libc/pull/4248">#4248</a>)</li>
<li>Hurd: Fix build from missing <code>fpos_t</code> (<a
href="https://redirect.github.com/rust-lang/libc/pull/4472">#4472</a>)</li>
<li>Loongarch64 Musl: Fix the <code>struct ipc_perm</code> bindings (<a
href="https://redirect.github.com/rust-lang/libc/pull/4384">#4384</a>)</li>
<li>Musl: Fix the <code>O_LARGEFILE</code> constant value. (<a
href="https://redirect.github.com/rust-lang/libc/pull/4443">#4443</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9288ec0123"><code>9288ec0</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/4486">#4486</a>
from tgross35/fix-no-publish</li>
<li><a
href="6787debbcf"><code>6787deb</code></a>
Fix publishing on the <code>libc-0.2</code> branch</li>
<li><a
href="1c5b5538c8"><code>1c5b553</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/4481">#4481</a>
from tgross35/release</li>
<li><a
href="2d0dfd33ba"><code>2d0dfd3</code></a>
chore: release libc 0.2.173</li>
<li><a
href="92347ec8c9"><code>92347ec</code></a>
Merge pull request <a
href="https://redirect.github.com/rust-lang/libc/issues/4476">#4476</a>
from tgross35/backport-scotch-bonnet</li>
<li><a
href="1a418edf7c"><code>1a418ed</code></a>
lints: Remove <code>allow(dead_code)</code></li>
<li><a
href="7be1a7a7d8"><code>7be1a7a</code></a>
lints: Remove <code>allow(redundant_semicolons)</code></li>
<li><a
href="53301c2052"><code>53301c2</code></a>
lints: Warn rather than deny by default</li>
<li><a
href="6595c614b4"><code>6595c61</code></a>
Add AIX triple to Cargo.toml for doc.</li>
<li><a
href="600d8adc21"><code>600d8ad</code></a>
Add ctest-next stub and expected dependencies</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-lang/libc/compare/0.2.172...0.2.173">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=libc&package-manager=cargo&previous-version=0.2.172&new-version=0.2.173)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 19:18:00 +00:00
dependabot[bot]
5b70e2a0d1 build(deps): bump reqwest from 0.12.19 to 0.12.20 in /rust (#9540)
Bumps [reqwest](https://github.com/seanmonstar/reqwest) from 0.12.19 to
0.12.20.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/seanmonstar/reqwest/releases">reqwest's
releases</a>.</em></p>
<blockquote>
<h2>v0.12.20</h2>
<h2>Highlights</h2>
<ul>
<li>Add <code>ClientBuilder::tcp_user_timeout(Duration)</code> option to
set <code>TCP_USER_TIMEOUT</code>.</li>
<li>Fix proxy headers only using the first matched proxy.</li>
<li>(wasm) Fix re-adding <code>Error::is_status()</code>.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>fix(client): apply authorization header to first matching proxy only
by <a href="https://github.com/0x676e67"><code>@​0x676e67</code></a> in
<a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2714">seanmonstar/reqwest#2714</a></li>
<li>wasm: re-add Error::is_status() by <a
href="https://github.com/seanmonstar"><code>@​seanmonstar</code></a> in
<a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2720">seanmonstar/reqwest#2720</a></li>
<li>properly match error variants in test by <a
href="https://github.com/Ruben2424"><code>@​Ruben2424</code></a> in <a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2721">seanmonstar/reqwest#2721</a></li>
<li>refactor: reduce size of Pending request future by <a
href="https://github.com/seanmonstar"><code>@​seanmonstar</code></a> in
<a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2725">seanmonstar/reqwest#2725</a></li>
<li>feat: add tcp_user_timeout builder option by <a
href="https://github.com/seanmonstar"><code>@​seanmonstar</code></a> in
<a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2724">seanmonstar/reqwest#2724</a></li>
<li>refactor: use hyper-util Socks connectors by <a
href="https://github.com/seanmonstar"><code>@​seanmonstar</code></a> in
<a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2726">seanmonstar/reqwest#2726</a></li>
<li>Remove some unused dependencies by <a
href="https://github.com/DaniPopes"><code>@​DaniPopes</code></a> in <a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2716">seanmonstar/reqwest#2716</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/DaniPopes"><code>@​DaniPopes</code></a>
made their first contribution in <a
href="https://redirect.github.com/seanmonstar/reqwest/pull/2716">seanmonstar/reqwest#2716</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/seanmonstar/reqwest/compare/v0.12.19...v0.12.20">https://github.com/seanmonstar/reqwest/compare/v0.12.19...v0.12.20</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/seanmonstar/reqwest/blob/master/CHANGELOG.md">reqwest's
changelog</a>.</em></p>
<blockquote>
<h2>v0.12.20</h2>
<ul>
<li>Add <code>ClientBuilder::tcp_user_timeout(Duration)</code> option to
set <code>TCP_USER_TIMEOUT</code>.</li>
<li>Fix proxy headers only using the first matched proxy.</li>
<li>(wasm) Fix re-adding <code>Error::is_status()</code>.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="099ae80e87"><code>099ae80</code></a>
v0.12.20</li>
<li><a
href="4bccf41060"><code>4bccf41</code></a>
chore: remove some unused dependencies (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2716">#2716</a>)</li>
<li><a
href="92487709d6"><code>9248770</code></a>
refactor: use hyper-util Socks connectors (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2726">#2726</a>)</li>
<li><a
href="334837c1ff"><code>334837c</code></a>
feat: add tcp_user_timeout builder option (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2724">#2724</a>)</li>
<li><a
href="13487fb602"><code>13487fb</code></a>
refactor: reduce size of Pending request future (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2725">#2725</a>)</li>
<li><a
href="a26879dfef"><code>a26879d</code></a>
tests: properly match http3 error variants (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2721">#2721</a>)</li>
<li><a
href="65102c99ab"><code>65102c9</code></a>
wasm: re-add Error::is_status() (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2720">#2720</a>)</li>
<li><a
href="f94c5cd556"><code>f94c5cd</code></a>
fix(proxy): apply headers to first matching proxy only (<a
href="https://redirect.github.com/seanmonstar/reqwest/issues/2714">#2714</a>)</li>
<li>See full diff in <a
href="https://github.com/seanmonstar/reqwest/compare/v0.12.19...v0.12.20">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=reqwest&package-manager=cargo&previous-version=0.12.19&new-version=0.12.20)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-16 19:16:32 +00:00