@@ -445,7 +445,7 @@ defmodule Mint.HTTP1 do
445
445
446
446
def stream ( % __MODULE__ { socket: socket } = conn , { tag , socket , reason } )
447
447
when tag in [ :tcp_error , :ssl_error ] do
448
- handle_error ( conn , conn . transport . wrap_error ( reason ) )
448
+ handle_transport_error ( conn , conn . transport . wrap_error ( reason ) )
449
449
end
450
450
451
451
def stream ( % __MODULE__ { } , _message ) do
@@ -482,7 +482,11 @@ defmodule Mint.HTTP1 do
482
482
end
483
483
end
484
484
485
- defp handle_error ( conn , error ) do
485
+ defp handle_transport_error ( conn , error ) do
486
+ # The socket *should* be closed in this case, but it might not be, so let's still
487
+ # close it to make sure.
488
+ _ = conn . transport . close ( conn . socket )
489
+
486
490
conn = put_in ( conn . state , :closed )
487
491
{ :error , conn , error , [ ] }
488
492
end
@@ -500,7 +504,7 @@ defmodule Mint.HTTP1 do
500
504
case conn . transport . recv ( conn . socket , byte_count , timeout ) do
501
505
{ :ok , data } -> handle_data ( conn , data )
502
506
{ :error , % Mint.TransportError { reason: :closed } } -> handle_close ( conn )
503
- { :error , error } -> handle_error ( conn , error )
507
+ { :error , error } -> handle_transport_error ( conn , error )
504
508
end
505
509
end
506
510
0 commit comments