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

openSUSE Build Service is sponsored by