Skip to content

Commit 041bb1b

Browse files
authored
upgrade_adapter/3 runs before_send callbacks (#1309)
1 parent d2580b0 commit 041bb1b

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

lib/plug/conn.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1469,7 +1469,8 @@ defmodule Plug.Conn do
14691469
when state in @unsent do
14701470
case adapter.upgrade(payload, protocol, args) do
14711471
{:ok, payload} ->
1472-
%{conn | adapter: {adapter, payload}, state: :upgraded}
1472+
conn = run_before_send(conn, :upgraded)
1473+
%{conn | adapter: {adapter, payload}}
14731474

14741475
{:error, :not_supported} ->
14751476
raise ArgumentError, "upgrade to #{protocol} not supported by #{inspect(adapter)}"

test/plug/conn_test.exs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,15 @@ defmodule Plug.ConnTest do
480480
end)
481481
end
482482

483+
test "upgrade_adapter/3 runs before_send callbacks" do
484+
conn =
485+
conn(:get, "/foo")
486+
|> register_before_send(&assign(&1, :ran_before_send, true))
487+
|> upgrade_adapter(:supported, opt: :supported)
488+
489+
assert conn.assigns[:ran_before_send] == true
490+
end
491+
483492
test "chunk/2 raises if send_chunked/3 hasn't been called yet" do
484493
conn = conn(:get, "/")
485494

0 commit comments

Comments
 (0)