Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > 34a2feb3128e65e4dc59beb39f80a9a0 > files > 1

erlang-ranch-0.6.2-1.fc18.src.rpm

From b177f1baad04255d3c1cdfa92a48fc01b3af36ac Mon Sep 17 00:00:00 2001
From: Peter Lemenkov <lemenkov@gmail.com>
Date: Sat, 9 Mar 2013 12:24:13 +0400
Subject: [PATCH 1/2] Workaround for missing file:sendfile/2 in R14B

Signed-off-by: Peter Lemenkov <lemenkov@gmail.com>
---
 src/ranch_tcp.erl |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/src/ranch_tcp.erl b/src/ranch_tcp.erl
index bb7ad55..3014123 100644
--- a/src/ranch_tcp.erl
+++ b/src/ranch_tcp.erl
@@ -114,7 +114,21 @@ send(Socket, Packet) ->
 -spec sendfile(inet:socket(), file:name())
 	-> {ok, non_neg_integer()} | {error, atom()}.
 sendfile(Socket, Filename) ->
-	file:sendfile(Filename, Socket).
+	sendfile(Filename, Socket, 0).
+
+sendfile(Socket, IoDevice, Sent) ->
+	case file:read(IoDevice, 16#1FFF) of
+		eof ->
+			ok = file:close(IoDevice),
+			{ok, Sent};
+		{ok, Bin} ->
+			case gen_tcp:send(Socket, Bin) of
+				ok ->
+					sendfile(Socket, IoDevice, Sent + byte_size(Bin));
+				{error, Reason} ->
+					{error, Reason}
+			end
+	end.
 
 %% @doc Set options on the given socket.
 %% @see inet:setopts/2
-- 
1.7.1