diff options
| author | ruki <[email protected]> | 2022-06-16 00:29:09 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-06-16 00:29:09 +0800 |
| commit | ea89ffdb54ecc2bfb34f7a3162f216207ddf13ff (patch) | |
| tree | 38fdd8da9cb4fea8bd320be2c27c1a24287180ea | |
| parent | 78e01e055477f407d6782075ae5cf6de0abf38f5 (diff) | |
improve to send/recv empty file
| -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 |
