From c68746bda431c5a068e6bb4a93bfe5ae77ce2d9a Mon Sep 17 00:00:00 2001 From: Lukas Larsson Date: Wed, 16 Nov 2011 16:07:48 +0100 Subject: Remove support for file_server, sendfile has to be raw Because the sending process has to be the controlling process of the tcp socket used to send data it is not possible to use the file_server --- lib/kernel/src/gen_tcp.erl | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) (limited to 'lib/kernel/src/gen_tcp.erl') diff --git a/lib/kernel/src/gen_tcp.erl b/lib/kernel/src/gen_tcp.erl index 3f1e432f7a..9dd70ce5cc 100644 --- a/lib/kernel/src/gen_tcp.erl +++ b/lib/kernel/src/gen_tcp.erl @@ -317,23 +317,15 @@ unrecv(S, Data) when is_port(S) -> -define(MAX_CHUNK_SIZE, (1 bsl 20)*20). %% 20 MB, has to fit in primary memory -spec sendfile(File, Sock, Offset, Bytes, Opts) -> - {'ok', non_neg_integer()} | {'error', inet:posix()} when - File :: file:io_device(), + {'ok', non_neg_integer()} | {'error', inet:posix() } | + {'error', not_owner} when + File :: file:fd(), Sock :: socket(), Offset :: non_neg_integer(), Bytes :: non_neg_integer(), Opts :: [sendfile_option()]. -sendfile(File, Sock, Offset, Bytes, Opts) when is_pid(File) -> - Ref = erlang:monitor(process, File), - File ! {file_request,self(),File, - {sendfile,Sock,Offset,Bytes,Opts}}, - receive - {file_reply,File,Reply} -> - erlang:demonitor(Ref,[flush]), - Reply; - {'DOWN', Ref, _, _, _} -> - {error, terminated} - end; +sendfile(File, _Sock, _Offet, _Bytes, _Opts) when is_pid(File) -> + {error, badarg}; sendfile(File, Sock, Offset, Bytes, []) -> sendfile(File, Sock, Offset, Bytes, ?MAX_CHUNK_SIZE, undefined, undefined, false, false, false); -- cgit v1.2.3