No description
  • Elixir 97.3%
  • Python 1.3%
  • Nix 1.2%
  • Shell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Renovate 561ec17e2a
All checks were successful
Lint / Lint (push) Successful in 2m7s
Nix check / check-nix (push) Successful in 11m0s
chore(deps): update dependency hackney to v4.7.4 (#73)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [hackney](https://hex.pm/packages/hackney) ([source](https://github.com/benoitc/hackney)) | prod | patch | `4.7.2` → `4.7.4` |

---

### Release Notes

<details>
<summary>benoitc/hackney (hackney)</summary>

### [`v4.7.4`](https://github.com/benoitc/hackney/releases/tag/4.7.4)

[Compare Source](https://github.com/benoitc/hackney/compare/4.7.3...4.7.4)

##### Fixed

- A connection attempt that outlives its timeout no longer terminates the pool,
  and with it every caller of that pool. The dial is made with the request's
  `connect_timeout`, and a call that times out, like a connection process that
  dies while dialing, comes back as a checkout error ([#&#8203;927](https://github.com/benoitc/hackney/issues/927), [#&#8203;928](https://github.com/benoitc/hackney/issues/928), thanks
  [@&#8203;aboroska](https://github.com/aboroska)).
- Handing a pooled connection to a new owner, and the prewarm dial, are guarded
  like the other calls the pool makes into a connection process. A connection
  that is gone or wedged is dropped instead of taking the pool down ([#&#8203;929](https://github.com/benoitc/hackney/issues/929)).
- Stopping a connection from inside the pool is bounded to 100ms, after which
  the connection is killed. A connection wedged in a transport call, which a
  failed dial makes likely, used to hold every caller of the pool for as long
  as the transport took to return ([#&#8203;929](https://github.com/benoitc/hackney/issues/929)).
- The health probes the pool runs on a connection (`is_ready`, `checkin_info`,
  `set_owner`, `get_state`) take an explicit timeout, and the pool passes
  250ms. `h2_conn_usable/1` used the 5s default, so one wedged HTTP/2
  connection stalled the pool for 5 seconds on every checkout for that host
  ([#&#8203;929](https://github.com/benoitc/hackney/issues/929)).

##### Added

- Fault injection test harness for the pool: a transport which can be told to
  misbehave, a sentinel which makes a dead pool visible, fault and chaos
  suites, and a structural test which fails if the pool calls a connection
  process outside a `try`. `DEVELOPMENT.md` explains how to use it ([#&#8203;929](https://github.com/benoitc/hackney/issues/929)).

##### Changed

- Update dependencies to their latest releases: `h2` 0.12.0 and `webtransport`
  0.4.5 ([#&#8203;930](https://github.com/benoitc/hackney/issues/930)).

### [`v4.7.3`](https://github.com/benoitc/hackney/releases/tag/4.7.3)

[Compare Source](https://github.com/benoitc/hackney/compare/4.7.2...4.7.3)

hackney 4.7.3 is a bugfix and hardening release for the Erlang HTTP client. It clears a few ways a pooled connection could stall or leak, hardens CRLF handling on the proxy and streaming request paths, restores curl-style `Content-Length: 0` on empty POST/PUT/PATCH bodies (so servers such as AWS that require the header are happy again), and refreshes every dependency to its latest release.

Upgrading from 4.7.2 needs no code changes.

##### Fixed

- Reusing a pooled HTTP/2 or HTTP/3 connection no longer crashes the caller of
  `hackney:connect/4` when the pooled connection terminates during the checkout
  liveness probe. The `get_state` probe is guarded so a terminating connection
  falls through to a fresh one ([#&#8203;914](https://github.com/benoitc/hackney/issues/914)).
- `hackney_url:normalize/2` now rejects a host that reaches an IP literal only
  after IDNA folds the Unicode full-stop variants (U+3002/U+FF0E/U+FF61) to
  ASCII dots (for example `127。0。0。1` becoming `127.0.0.1`), closing a bypass
  of the percent-encoded-IP check.
- The CONNECT proxy handshake rejects CR/LF/NUL in the target host instead of
  concatenating it into the request line and `Host` header.
- The pooled HTTPS upgrade bounds the TLS handshake with `connect_timeout`
  (`ssl:connect/3`), so a server that stalls the handshake no longer pins the
  connection process and its pool slot ([#&#8203;916](https://github.com/benoitc/hackney/issues/916)).
- The streaming request path sanitizes header values (CR/LF) like the buffered
  path, and the request method is validated (CR/LF/NUL) at every entry point,
  not just the request target.
- A response body cut short by the peer closing mid-transfer no longer leaks
  the connection process. `read_full_body/2` hands back `socket = undefined`,
  so the connection went straight to `closed` and never reached the reuse
  check added for [#&#8203;902](https://github.com/benoitc/hackney/issues/902). An unpooled connection arms no grace timer there and,
  when started under `hackney_conn_sup`, has the supervisor as its `owner`, so
  the owner-DOWN clause never fired either: the process parked forever holding
  every refc binary it had read. Callers could not clean up, since a
  synchronous request returns the body directly and the truncated read still
  reports `{ok, Body}` ([#&#8203;918](https://github.com/benoitc/hackney/issues/918)). The same applies to a failed body read and to
  bodyless (204/304) responses.
- `hackney_conn:get_location/1` and `set_location/2` no longer exit with
  `noproc` when the connection has already stopped, which would otherwise
  propagate out of `hackney:request/5` on the redirect path.

##### Changed

- Like curl, an empty body on a body-bearing method (POST/PUT/PATCH) now sends
  `Content-Length: 0`; bodyless methods (GET/HEAD/DELETE) are unchanged ([#&#8203;917](https://github.com/benoitc/hackney/issues/917)).
- Update dependencies to their latest releases: `quic` 1.8.0, `webtransport`
  0.4.4, `mimerl` 1.5.0, and `cowboy` 2.18.0 for the test suite.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- 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.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xOC4wIiwidXBkYXRlZEluVmVyIjoiNDQuMjQuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Reviewed-on: #73
2026-08-12 09:46:29 -07:00
.forgejo/workflows chore(reposyncer): update repo baseline (#71) 2026-07-30 09:27:44 -07:00
.vscode Use MySQL socket (#111) 2025-11-12 17:29:29 +00:00
config Stop using spaceage.mp 2026-01-26 12:46:50 -08:00
lib Stop using spaceage.mp 2026-01-26 12:46:50 -08:00
priv/repo Add prestige level to API 2025-04-21 15:39:36 -07:00
test lint step two 2019-10-04 11:58:33 -07:00
.credo.exs Disable moduledoc 2026-01-12 12:47:21 -08:00
.editorconfig lint step two 2019-10-04 11:58:33 -07:00
.formatter.exs initial 2019-10-02 23:25:42 -07:00
.gitignore flake 2025-10-13 12:12:27 -07:00
deps-hash.txt chore(deps): update dependency hackney to v4.7.4 (#73) 2026-08-12 09:46:29 -07:00
deps-hash.txt.doc chore(deps): lock file maintenance (#48) 2026-06-15 23:37:38 -07:00
flake.lock chore(deps): update dependency hackney to v4.7.2 (#72) 2026-08-06 09:46:04 -07:00
flake.nix 2605 2026-07-29 22:52:37 -07:00
mix.exs chore(deps): update dependency hackney to v4 (#35) 2026-05-04 00:07:55 -07:00
mix.lock chore(deps): update dependency hackney to v4.7.4 (#73) 2026-08-12 09:46:29 -07:00
README.md initial 2019-10-02 23:25:42 -07:00
register_discord_command.py Fix wording, auto-delete outdated commands 2024-03-30 01:20:32 -07:00
renovate.json chore(reposyncer): update repo baseline (#67) 2026-07-29 08:14:40 -07:00
run.sh Remove sentry 2026-01-09 11:41:25 -08:00

SpaceAgeApi

To start your Phoenix server:

  • Install dependencies with mix deps.get
  • Create and migrate your database with mix ecto.setup
  • Start Phoenix endpoint with mix phx.server

Now you can visit localhost:4000 from your browser.

Ready to run in production? Please check our deployment guides.

Learn more