From: Matthias Schiffer Date: Mon, 17 Nov 2014 13:25:51 +0000 (+0100) Subject: modules/base: ltn12: source.file() should terminate when an empty chunk is read X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=commitdiff_plain;h=7bd68db7d702c5951d192359f2dd6b256a98c62d modules/base: ltn12: source.file() should terminate when an empty chunk is read The read method of nixio's file and socket objects both return an empty string when they reach EOF, not nil, causing the consumer to loop endlessly as source.file() never terminates. As there is no other situation in which an empty chunk is read, just change it to nil to terminate the consumer's loop. Signed-off-by: Matthias Schiffer --- diff --git a/modules/base/luasrc/ltn12.lua b/modules/base/luasrc/ltn12.lua index 9371290c6..b59fb8c48 100644 --- a/modules/base/luasrc/ltn12.lua +++ b/modules/base/luasrc/ltn12.lua @@ -144,6 +144,7 @@ function source.file(handle, io_err) if handle then return function() local chunk = handle:read(BLOCKSIZE) + if chunk and chunk:len() == 0 then chunk = nil end if not chunk then handle:close() end return chunk end