diff options
| -rw-r--r-- | xmake/core/base/socket.lua | 5 | ||||
| -rw-r--r-- | xmake/modules/private/service/stream.lua | 6 |
2 files changed, 9 insertions, 2 deletions
diff --git a/xmake/core/base/socket.lua b/xmake/core/base/socket.lua index 9a36c45a8..615f28a0c 100644 --- a/xmake/core/base/socket.lua +++ b/xmake/core/base/socket.lua @@ -353,6 +353,11 @@ function _instance:sendfile(file, opt) return -1, errors end + -- empty file? + if file:size() == 0 then + return -1, string.format("%s: send empty file!", self) + end + -- init start and last opt = opt or {} local start = opt.start or 1 diff --git a/xmake/modules/private/service/stream.lua b/xmake/modules/private/service/stream.lua index 24f664a2a..f674125e5 100644 --- a/xmake/modules/private/service/stream.lua +++ b/xmake/modules/private/service/stream.lua @@ -195,7 +195,7 @@ function stream:send_file(filepath, opt) local ok = false local sock = self._SOCK local file = io.open(filepath, 'rb') - if file then + if file and file:size() > 0 then local send = sock:sendfile(file, {block = true}) if send > 0 then ok = true @@ -352,8 +352,10 @@ end function stream:recv_file(filepath) local size, flags = self:recv_header() if size then - -- empty file? we need not create file + -- empty file? we just create an empty file if size == 0 then + local file = io.open(filepath, "wb") + file:close() return size end local result |
