aboutsummaryrefslogtreecommitdiff
path: root/src/http.lua
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2002-12-02 23:34:41 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2002-12-02 23:34:41 +0000
commitd7e80592a69c076991ed4f4cc15d5390e14d1f0b (patch)
tree5fd9c99742b4a03e6a66f940a1f86f98d4db50c8 /src/http.lua
parentb796207ce06a66b04cce6686b3fa664c06703995 (diff)
downloadluasocket-d7e80592a69c076991ed4f4cc15d5390e14d1f0b.tar.gz
luasocket-d7e80592a69c076991ed4f4cc15d5390e14d1f0b.tar.bz2
luasocket-d7e80592a69c076991ed4f4cc15d5390e14d1f0b.zip
Already compiling and running for Lua 5.0 (alpha)
Diffstat (limited to 'src/http.lua')
-rw-r--r--src/http.lua20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/http.lua b/src/http.lua
index 9832a6b..dce3ac8 100644
--- a/src/http.lua
+++ b/src/http.lua
@@ -32,7 +32,7 @@ Public.BLOCKSIZE = 8192
32----------------------------------------------------------------------------- 32-----------------------------------------------------------------------------
33function Private.try_receive(...) 33function Private.try_receive(...)
34 local sock = arg[1] 34 local sock = arg[1]
35 local data, err = call(sock.receive, arg) 35 local data, err = sock.receive(unpack(arg))
36 if err then 36 if err then
37 sock:close() 37 sock:close()
38 return nil, err 38 return nil, err
@@ -62,7 +62,7 @@ end
62----------------------------------------------------------------------------- 62-----------------------------------------------------------------------------
63function Private.get_statuscode(line) 63function Private.get_statuscode(line)
64 local code, _ 64 local code, _
65 _, _, code = strfind(line, "HTTP/%d*%.%d* (%d%d%d)") 65 _, _, code = string.find(line, "HTTP/%d*%.%d* (%d%d%d)")
66 return tonumber(code) 66 return tonumber(code)
67end 67end
68 68
@@ -102,17 +102,17 @@ function Private.receive_headers(sock, headers)
102 -- headers go until a blank line is found 102 -- headers go until a blank line is found
103 while line ~= "" do 103 while line ~= "" do
104 -- get field-name and value 104 -- get field-name and value
105 _,_, name, value = strfind(line, "^(.-):%s*(.*)") 105 _,_, name, value = string.find(line, "^(.-):%s*(.*)")
106 if not name or not value then 106 if not name or not value then
107 sock:close() 107 sock:close()
108 return nil, "malformed reponse headers" 108 return nil, "malformed reponse headers"
109 end 109 end
110 name = strlower(name) 110 name = string.lower(name)
111 -- get next line (value might be folded) 111 -- get next line (value might be folded)
112 line, err = Private.try_receive(sock) 112 line, err = Private.try_receive(sock)
113 if err then return nil, err end 113 if err then return nil, err end
114 -- unfold any folded values 114 -- unfold any folded values
115 while not err and strfind(line, "^%s") do 115 while not err and string.find(line, "^%s") do
116 value = value .. line 116 value = value .. line
117 line, err = Private.try_receive(sock) 117 line, err = Private.try_receive(sock)
118 if err then return nil, err end 118 if err then return nil, err end
@@ -142,7 +142,7 @@ function Private.receivebody_bychunks(sock, headers, receive_cb)
142 local go, uerr = receive_cb(nil, err) 142 local go, uerr = receive_cb(nil, err)
143 return uerr or err 143 return uerr or err
144 end 144 end
145 size = tonumber(gsub(line, ";.*", ""), 16) 145 size = tonumber(string.gsub(line, ";.*", ""), 16)
146 if not size then 146 if not size then
147 err = "invalid chunk size" 147 err = "invalid chunk size"
148 sock:close() 148 sock:close()
@@ -299,7 +299,7 @@ function Private.send_indirect(data, send_cb, chunk, size)
299 data:close() 299 data:close()
300 return err 300 return err
301 end 301 end
302 sent = sent + strlen(chunk) 302 sent = sent + string.len(chunk)
303 if sent >= size then break end 303 if sent >= size then break end
304 chunk, size = send_cb() 304 chunk, size = send_cb()
305 end 305 end
@@ -391,7 +391,7 @@ function Private.fill_headers(headers, parsed)
391 lower["user-agent"] = Public.USERAGENT 391 lower["user-agent"] = Public.USERAGENT
392 -- override with user values 392 -- override with user values
393 for i,v in headers do 393 for i,v in headers do
394 lower[strlower(i)] = v 394 lower[string.lower(i)] = v
395 end 395 end
396 lower["host"] = parsed.host 396 lower["host"] = parsed.host
397 -- this cannot be overriden 397 -- this cannot be overriden
@@ -554,7 +554,7 @@ function Public.request_cb(request, response)
554 request.headers = Private.fill_headers(request.headers, parsed) 554 request.headers = Private.fill_headers(request.headers, parsed)
555 -- try to connect to server 555 -- try to connect to server
556 local sock 556 local sock
557 sock, response.error = connect(parsed.host, parsed.port) 557 sock, response.error = socket.connect(parsed.host, parsed.port)
558 if not sock then return response end 558 if not sock then return response end
559 -- set connection timeout so that we do not hang forever 559 -- set connection timeout so that we do not hang forever
560 sock:timeout(Public.TIMEOUT) 560 sock:timeout(Public.TIMEOUT)
@@ -619,7 +619,7 @@ function Public.request(request)
619 local response = {} 619 local response = {}
620 if request.body then 620 if request.body then
621 request.body_cb = function() 621 request.body_cb = function()
622 return request.body, strlen(request.body) 622 return request.body, string.len(request.body)
623 end 623 end
624 end 624 end
625 local cat = Concat.create() 625 local cat = Concat.create()