@@ -40,7 +40,6 @@ defmodule Plug.Upload do
4040 @ dir_table __MODULE__ . Dir
4141 @ path_table __MODULE__ . Path
4242 @ max_attempts 10
43- @ temp_env_vars ~w( PLUG_TMPDIR TMPDIR TMP TEMP) s
4443
4544 @ doc """
4645 Requests a random file to be created in the upload directory
@@ -85,7 +84,7 @@ defmodule Plug.Upload do
8584 :ok
8685
8786 [ ] ->
88- server = plug_server ( )
87+ server = plug_server ( to_pid )
8988 { :ok , tmp } = generate_tmp_dir ( )
9089 :ok = GenServer . call ( server , { :give_away , to_pid , tmp , path } )
9190 :ets . delete_object ( @ path_table , { from_pid , path } )
@@ -105,7 +104,7 @@ defmodule Plug.Upload do
105104 { :ok , tmp }
106105
107106 [ ] ->
108- server = plug_server ( )
107+ server = plug_server ( pid )
109108 GenServer . cast ( server , { :monitor , pid } )
110109
111110 with { :ok , tmp } <- generate_tmp_dir ( ) do
@@ -188,30 +187,23 @@ defmodule Plug.Upload do
188187 end
189188 end
190189
191- defp plug_server do
192- Process . whereis ( __MODULE__ ) ||
190+ defp plug_server ( pid ) do
191+ PartitionSupervisor . whereis_name ( { __MODULE__ , pid } )
192+ rescue
193+ ArgumentError ->
193194 raise Plug.UploadError ,
194195 "could not find process Plug.Upload. Have you started the :plug application?"
195196 end
196197
197198 @ doc false
198199 def start_link ( _ ) do
199- GenServer . start_link ( __MODULE__ , :ok , name: __MODULE__ )
200+ GenServer . start_link ( __MODULE__ , :ok )
200201 end
201202
202203 ## Callbacks
203204
204205 @ impl true
205206 def init ( :ok ) do
206- Process . flag ( :trap_exit , true )
207- tmp = Enum . find_value ( @ temp_env_vars , "/tmp" , & System . get_env / 1 ) |> Path . expand ( )
208- cwd = Path . join ( File . cwd! ( ) , "tmp" )
209- # Add a tiny random component to avoid clashes between nodes
210- suffix = :crypto . strong_rand_bytes ( 3 ) |> Base . url_encode64 ( )
211- :persistent_term . put ( __MODULE__ , { [ tmp , cwd ] , suffix } )
212-
213- :ets . new ( @ dir_table , [ :named_table , :public , :set ] )
214- :ets . new ( @ path_table , [ :named_table , :public , :duplicate_bag ] )
215207 { :ok , % { } }
216208 end
217209
@@ -255,12 +247,6 @@ defmodule Plug.Upload do
255247 { :noreply , state }
256248 end
257249
258- @ impl true
259- def terminate ( _reason , _state ) do
260- folder = fn entry , :ok -> delete_path ( entry ) end
261- :ets . foldl ( folder , :ok , @ path_table )
262- end
263-
264250 defp delete_path ( { _pid , path } ) do
265251 :file . delete ( path )
266252 :ok
0 commit comments