Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:19
erlang
3032-Fix-sendfile-fallback-to-match-test-case.p...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 3032-Fix-sendfile-fallback-to-match-test-case.patch of Package erlang
From 0608a6bc6a89de211d697d43159d3f5c56033f2f Mon Sep 17 00:00:00 2001 From: Raimo Niskanen <raimo@erlang.org> Date: Tue, 28 Jul 2020 14:39:44 +0200 Subject: [PATCH 2/2] Fix sendfile fallback to match test case --- lib/kernel/src/file.erl | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/lib/kernel/src/file.erl b/lib/kernel/src/file.erl index 3883e05147..b34e9272b1 100644 --- a/lib/kernel/src/file.erl +++ b/lib/kernel/src/file.erl @@ -1307,7 +1307,8 @@ sendfile(Filename, Sock) -> %% Internal sendfile functions sendfile(#file_descriptor{ module = Mod } = Fd, Sock, Offset, Bytes, - ChunkSize, Headers, Trailers, Opts) -> + ChunkSize, Headers, Trailers, Opts) + when is_integer(Offset), is_integer(Bytes) -> case Sock of {'$inet', _, _} -> sendfile_fallback( @@ -1356,12 +1357,19 @@ sendfile_fallback(File, Sock, Offset, Bytes, ChunkSize, Headers, Trailers) -> end. -sendfile_fallback(File, Sock, Offset, Bytes, ChunkSize) -> +sendfile_fallback(File, Sock, Offset, Bytes, ChunkSize) + when 0 =< Bytes -> {ok, CurrPos} = file:position(File, {cur, 0}), - {ok, _NewPos} = file:position(File, {bof, Offset}), - Res = sendfile_fallback_int(File, Sock, Bytes, ChunkSize, 0), - _ = file:position(File, {bof, CurrPos}), - Res. + case file:position(File, {bof, Offset}) of + {ok, _NewPos} -> + Res = sendfile_fallback_int(File, Sock, Bytes, ChunkSize, 0), + _ = file:position(File, {bof, CurrPos}), + Res; + Error -> + Error + end; +sendfile_fallback(_, _, _, _, _) -> + {error, einval}. sendfile_fallback_int(File, Sock, Bytes, ChunkSize, BytesSent) -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor