Skip to content

Deauth organizations when deauthing user#478

Merged
ericmj merged 1 commit intomasterfrom
emj/deauth-org
Jan 7, 2018
Merged

Deauth organizations when deauthing user#478
ericmj merged 1 commit intomasterfrom
emj/deauth-org

Conversation

@ericmj
Copy link
Copy Markdown
Member

@ericmj ericmj commented Jan 5, 2018

No description provided.

@ericmj ericmj requested a review from wojtekmach January 5, 2018 15:23
@ericmj ericmj merged commit fbe82ab into master Jan 7, 2018
@ericmj ericmj deleted the emj/deauth-org branch January 7, 2018 13:30
ericmj added a commit that referenced this pull request Apr 12, 2026
Stream request bodies:

`mix hex.publish` shows an upload progress bar by wrapping the tarball
in a producer function and passing a `progress_callback`. Previously
`Hex.HTTP.build_mint_request` collected the full stream into a binary
before sending, so the callback fired at gigabyte-per-second (reading
from memory) and then the actual upload ran silently with no progress
shown. Now `Hex.HTTP` passes `{:stream, fun, offset}` through to
`Pool.Conn`, which calls `Mint.HTTP.stream_request_body/3` chunk by
chunk — the callback fires as bytes actually go out on the wire.

IPv4/IPv6 fallback:

`Hex.HTTP.retry` swaps `:inet`/`:inet6` in `connect_opts` on
`:nxdomain`/`:ehostunreach` to recover from hosts that resolve on only
one IP family. The pool was keyed on `{scheme, host, port}` and reused
the first request's `connect_opts` forever, so the swapped opts never
reached a new connect. Include the inet variant in the Host registry
key so the fallback retry actually gets its own pool with the opposite
inet flags.

Vendor script:

Add a comment block at the top of `scripts/vendor_mint.sh` listing the
upstream Mint PRs that must be present in any source tree used for
re-vendoring (#478 Elixir ~> 1.12 support, already applied; #479 1xx
informational handling, still open), with links to the PRs and to the
fork branches if re-vendoring before merge.
ericmj added a commit that referenced this pull request Apr 12, 2026
Refactored the Mint HTTP/2 connection-window patch from a narrow
`:connection_window_size` connect option into a proper public API,
`Mint.HTTP2.set_window_size(conn, target, new_size)`, that supports
both `:connection` and `{:request, ref}` and can be called at any point
after connect. Tracks the receive window in a new `receive_window_size`
field (connection and stream); grow-only; validated to `1..2^31-1`.

This is the function shape that fills a longstanding, well-known gap in
Mint's public API — upstream issue #357 (2022, closed) asked for exactly
this, #432 (2024, still open) is a related enhancement. Ready to submit
upstream as a PR.

On the hex side:

  * Re-vendor from the integration branch (ericmj/hex-vendor-integration)
    which has PR #478 (Elixir 1.12), PR #479 (HTTP/1 1xx handling) and
    the new set_window_size/3 commit all stacked.
  * `Conn.do_connect` now calls `Hex.Mint.HTTP2.set_window_size(conn,
    :connection, 8_000_000)` immediately after a successful HTTP/2 connect.
    No-op on HTTP/1. TCP ordering guarantees the WINDOW_UPDATE reaches the
    server before any request HEADERS, so there's no extra RTT.
  * `:client_settings: [initial_window_size: 8_000_000]` still handles the
    per-stream initial window via SETTINGS.
  * Update `scripts/vendor_mint.sh` comment block to point at the
    integration branch and list all three upstream Mint patches with
    branch links.
ericmj added a commit that referenced this pull request Apr 13, 2026
Stream request bodies:

`mix hex.publish` shows an upload progress bar by wrapping the tarball
in a producer function and passing a `progress_callback`. Previously
`Hex.HTTP.build_mint_request` collected the full stream into a binary
before sending, so the callback fired at gigabyte-per-second (reading
from memory) and then the actual upload ran silently with no progress
shown. Now `Hex.HTTP` passes `{:stream, fun, offset}` through to
`Pool.Conn`, which calls `Mint.HTTP.stream_request_body/3` chunk by
chunk — the callback fires as bytes actually go out on the wire.

IPv4/IPv6 fallback:

`Hex.HTTP.retry` swaps `:inet`/`:inet6` in `connect_opts` on
`:nxdomain`/`:ehostunreach` to recover from hosts that resolve on only
one IP family. The pool was keyed on `{scheme, host, port}` and reused
the first request's `connect_opts` forever, so the swapped opts never
reached a new connect. Include the inet variant in the Host registry
key so the fallback retry actually gets its own pool with the opposite
inet flags.

Vendor script:

Add a comment block at the top of `scripts/vendor_mint.sh` listing the
upstream Mint PRs that must be present in any source tree used for
re-vendoring (#478 Elixir ~> 1.12 support, already applied; #479 1xx
informational handling, still open), with links to the PRs and to the
fork branches if re-vendoring before merge.
ericmj added a commit that referenced this pull request Apr 13, 2026
Refactored the Mint HTTP/2 connection-window patch from a narrow
`:connection_window_size` connect option into a proper public API,
`Mint.HTTP2.set_window_size(conn, target, new_size)`, that supports
both `:connection` and `{:request, ref}` and can be called at any point
after connect. Tracks the receive window in a new `receive_window_size`
field (connection and stream); grow-only; validated to `1..2^31-1`.

This is the function shape that fills a longstanding, well-known gap in
Mint's public API — upstream issue #357 (2022, closed) asked for exactly
this, #432 (2024, still open) is a related enhancement. Ready to submit
upstream as a PR.

On the hex side:

  * Re-vendor from the integration branch (ericmj/hex-vendor-integration)
    which has PR #478 (Elixir 1.12), PR #479 (HTTP/1 1xx handling) and
    the new set_window_size/3 commit all stacked.
  * `Conn.do_connect` now calls `Hex.Mint.HTTP2.set_window_size(conn,
    :connection, 8_000_000)` immediately after a successful HTTP/2 connect.
    No-op on HTTP/1. TCP ordering guarantees the WINDOW_UPDATE reaches the
    server before any request HEADERS, so there's no extra RTT.
  * `:client_settings: [initial_window_size: 8_000_000]` still handles the
    per-stream initial window via SETTINGS.
  * Update `scripts/vendor_mint.sh` comment block to point at the
    integration branch and list all three upstream Mint patches with
    branch links.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants