aboutsummaryrefslogtreecommitdiff
path: root/src/socket.lua
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2005-06-12 22:02:21 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2005-06-12 22:02:21 +0000
commit8b114f3bf4ccea3b065551fa94649a9e45935b5b (patch)
tree06f2faa7e896e9434ba89ec68445ea56e6c8c6dc /src/socket.lua
parentb22f6f3830515a57a8776e7489b3e2d434abd12f (diff)
downloadluasocket-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.lua41
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
63socket.BLOCKSIZE = 2048 63socket.BLOCKSIZE = 2048
64 64
65socket.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 })
76end
77
78socket.sinkt["close-when-done"] = function(sock) 65socket.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 })
141end 128end
142 129
143socket.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 })
170end
171 130
172socket.sourcet["default"] = socket.sourcet["until-closed"] 131socket.sourcet["default"] = socket.sourcet["until-closed"]
173 132