File 3031-Implement-fallback-for-inet_backend-socket-sendfile.patch of Package erlang
From 1a472381068f8c183a286c50ea6cddda660b5a02 Mon Sep 17 00:00:00 2001
From: Raimo Niskanen <raimo@erlang.org>
Date: Mon, 27 Jul 2020 16:59:52 +0200
Subject: [PATCH 1/2] Implement fallback for inet_backend socket sendfile
---
lib/kernel/src/file.erl | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/lib/kernel/src/file.erl b/lib/kernel/src/file.erl
index 8abfb3ef35..3883e05147 100644
--- a/lib/kernel/src/file.erl
+++ b/lib/kernel/src/file.erl
@@ -1307,15 +1307,23 @@ sendfile(Filename, Sock) ->
%% Internal sendfile functions
sendfile(#file_descriptor{ module = Mod } = Fd, Sock, Offset, Bytes,
- ChunkSize, Headers, Trailers, Opts)
- when is_port(Sock) ->
- case Mod:sendfile(Fd, Sock, Offset, Bytes, ChunkSize, Headers, Trailers,
- Opts) of
- {error, enotsup} ->
- sendfile_fallback(Fd, Sock, Offset, Bytes, ChunkSize,
- Headers, Trailers);
- Else ->
- Else
+ ChunkSize, Headers, Trailers, Opts) ->
+ case Sock of
+ {'$inet', _, _} ->
+ sendfile_fallback(
+ Fd, Sock, Offset, Bytes, ChunkSize,
+ Headers, Trailers);
+ _ when is_port(Sock) ->
+ case Mod:sendfile(
+ Fd, Sock, Offset, Bytes, ChunkSize,
+ Headers, Trailers, Opts) of
+ {error, enotsup} ->
+ sendfile_fallback(
+ Fd, Sock, Offset, Bytes, ChunkSize,
+ Headers, Trailers);
+ Else ->
+ Else
+ end
end;
sendfile(_,_,_,_,_,_,_,_) ->
{error, badarg}.
--
2.26.2