aboutsummaryrefslogtreecommitdiff
path: root/src/http.lua
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2003-08-31 00:58:07 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2003-08-31 00:58:07 +0000
commit6789b83ff5c15296267f880d3b98cf8a1800c30a (patch)
tree9571dc81cb0147218332cda34b7ccdfed37ddbbc /src/http.lua
parentc51d4acf1c2a8675a3bb043e799ff4390cef47d6 (diff)
downloadluasocket-6789b83ff5c15296267f880d3b98cf8a1800c30a.tar.gz
luasocket-6789b83ff5c15296267f880d3b98cf8a1800c30a.tar.bz2
luasocket-6789b83ff5c15296267f880d3b98cf8a1800c30a.zip
Starting to use RCS in princeton again. Not behind a firewall anymore.
Diffstat (limited to 'src/http.lua')
-rw-r--r--src/http.lua40
1 files changed, 18 insertions, 22 deletions
diff --git a/src/http.lua b/src/http.lua
index 212e8f6..252285a 100644
--- a/src/http.lua
+++ b/src/http.lua
@@ -338,16 +338,16 @@ function Private.send_request(sock, method, uri, headers, body_cb)
338 err = Private.try_send(sock, method .. " " .. uri .. " HTTP/1.1\r\n") 338 err = Private.try_send(sock, method .. " " .. uri .. " HTTP/1.1\r\n")
339 if err then return err end 339 if err then return err end
340 -- if there is a request message body, add content-length header 340 -- if there is a request message body, add content-length header
341 if body_cb then 341 chunk, size = body_cb()
342 chunk, size = body_cb() 342 if type(chunk) == "string" and type(size) == "number" then
343 if type(chunk) == "string" and type(size) == "number" then 343 if size > 0 then
344 headers["content-length"] = tostring(size) 344 headers["content-length"] = tostring(size)
345 else 345 end
346 sock:close() 346 else
347 if not chunk and type(size) == "string" then return size 347 sock:close()
348 else return "invalid callback return" end 348 if not chunk and type(size) == "string" then return size
349 end 349 else return "invalid callback return" end
350 end 350 end
351 -- send request headers 351 -- send request headers
352 err = Private.send_headers(sock, headers) 352 err = Private.send_headers(sock, headers)
353 if err then return err end 353 if err then return err end
@@ -505,7 +505,10 @@ end
505----------------------------------------------------------------------------- 505-----------------------------------------------------------------------------
506function Private.build_request(data) 506function Private.build_request(data)
507 local request = {} 507 local request = {}
508 if type(data) == "table" then for i, v in data do request[i] = v end 508 if type(data) == "table" then
509 for i, v in data
510 do request[i] = v
511 end
509 else request.url = data end 512 else request.url = data end
510 return request 513 return request
511end 514end
@@ -613,18 +616,11 @@ end
613----------------------------------------------------------------------------- 616-----------------------------------------------------------------------------
614function Public.request(request) 617function Public.request(request)
615 local response = {} 618 local response = {}
616 if request.body then 619 request.body_cb = socket.callback.send_string(request.body)
617 request.body_cb = function() 620 local concat = socket.concat.create()
618 return request.body, string.len(request.body) 621 response.body_cb = socket.callback.receive_concat(concat)
619 end
620 end
621 local cat = socket.concat.create()
622 response.body_cb = function(chunk, err)
623 if chunk then cat:addstring(chunk) end
624 return 1
625 end
626 response = Public.request_cb(request, response) 622 response = Public.request_cb(request, response)
627 response.body = cat:getresult() 623 response.body = concat:getresult()
628 response.body_cb = nil 624 response.body_cb = nil
629 return response 625 return response
630end 626end