diff options
Diffstat (limited to 'src/socket.lua')
| -rw-r--r-- | src/socket.lua | 41 |
1 files changed, 0 insertions, 41 deletions
diff --git a/src/socket.lua b/src/socket.lua index f3563e7..9a523fe 100644 --- a/src/socket.lua +++ b/src/socket.lua | |||
| @@ -62,19 +62,6 @@ socket.sinkt = {} | |||
| 62 | 62 | ||
| 63 | socket.BLOCKSIZE = 2048 | 63 | socket.BLOCKSIZE = 2048 |
| 64 | 64 | ||
| 65 | socket.sinkt["http-chunked"] = function(sock) | ||
| 66 | return base.setmetatable({ | ||
| 67 | getfd = function() return sock:getfd() end, | ||
| 68 | dirty = function() return sock:dirty() end | ||
| 69 | }, { | ||
| 70 | __call = function(self, chunk, err) | ||
| 71 | if not chunk then return sock:send("0\r\n\r\n") end | ||
| 72 | local size = string.format("%X\r\n", string.len(chunk)) | ||
| 73 | return sock:send(size .. chunk .. "\r\n") | ||
| 74 | end | ||
| 75 | }) | ||
| 76 | end | ||
| 77 | |||
| 78 | socket.sinkt["close-when-done"] = function(sock) | 65 | socket.sinkt["close-when-done"] = function(sock) |
| 79 | return base.setmetatable({ | 66 | return base.setmetatable({ |
| 80 | getfd = function() return sock:getfd() end, | 67 | getfd = function() return sock:getfd() end, |
| @@ -140,34 +127,6 @@ socket.sourcet["until-closed"] = function(sock) | |||
| 140 | }) | 127 | }) |
| 141 | end | 128 | end |
| 142 | 129 | ||
| 143 | socket.sourcet["http-chunked"] = function(sock) | ||
| 144 | return base.setmetatable({ | ||
| 145 | getfd = function() return sock:getfd() end, | ||
| 146 | dirty = function() return sock:dirty() end | ||
| 147 | }, { | ||
| 148 | __call = function() | ||
| 149 | -- get chunk size, skip extention | ||
| 150 | local line, err = sock:receive() | ||
| 151 | if err then return nil, err end | ||
| 152 | local size = base.tonumber(string.gsub(line, ";.*", ""), 16) | ||
| 153 | if not size then return nil, "invalid chunk size" end | ||
| 154 | -- was it the last chunk? | ||
| 155 | if size <= 0 then | ||
| 156 | -- skip trailer headers, if any | ||
| 157 | local line, err = sock:receive() | ||
| 158 | while not err and line ~= "" do | ||
| 159 | line, err = sock:receive() | ||
| 160 | end | ||
| 161 | return nil, err | ||
| 162 | else | ||
| 163 | -- get chunk and skip terminating CRLF | ||
| 164 | local chunk, err = sock:receive(size) | ||
| 165 | if chunk then sock:receive() end | ||
| 166 | return chunk, err | ||
| 167 | end | ||
| 168 | end | ||
| 169 | }) | ||
| 170 | end | ||
| 171 | 130 | ||
| 172 | socket.sourcet["default"] = socket.sourcet["until-closed"] | 131 | socket.sourcet["default"] = socket.sourcet["until-closed"] |
| 173 | 132 | ||
