diff options
author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2005-06-12 22:02:21 +0000 |
---|---|---|
committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2005-06-12 22:02:21 +0000 |
commit | 8b114f3bf4ccea3b065551fa94649a9e45935b5b (patch) | |
tree | 06f2faa7e896e9434ba89ec68445ea56e6c8c6dc /src/socket.lua | |
parent | b22f6f3830515a57a8776e7489b3e2d434abd12f (diff) | |
download | luasocket-8b114f3bf4ccea3b065551fa94649a9e45935b5b.tar.gz luasocket-8b114f3bf4ccea3b065551fa94649a9e45935b5b.tar.bz2 luasocket-8b114f3bf4ccea3b065551fa94649a9e45935b5b.zip |
Stupid bug in http.lua.
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 | ||