aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2006-04-12 08:04:09 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2006-04-12 08:04:09 +0000
commitbe57b387d2394cc670b37e04edab41e293d47560 (patch)
tree96e3e626a83eeb203af9a074bca8febfecff0cc8
parent11282d17c8ecb6aa6fa31a3de742eae0215f4cc0 (diff)
downloadluasocket-be57b387d2394cc670b37e04edab41e293d47560.tar.gz
luasocket-be57b387d2394cc670b37e04edab41e293d47560.tar.bz2
luasocket-be57b387d2394cc670b37e04edab41e293d47560.zip
Stupid bug was reusing the nreqt.headers.host during redirect.
-rw-r--r--TODO10
-rw-r--r--src/http.lua19
2 files changed, 19 insertions, 10 deletions
diff --git a/TODO b/TODO
index ac4291c..d79aea5 100644
--- a/TODO
+++ b/TODO
@@ -1,3 +1,13 @@
1New mime support
2
3
4
5
6
7
8
9
10
1ftp send should return server replies? 11ftp send should return server replies?
2make sure there are no object files in the distribution tarball 12make sure there are no object files in the distribution tarball
3http handling of 100-continue, see DB patch 13http handling of 100-continue, see DB patch
diff --git a/src/http.lua b/src/http.lua
index bfa0345..6465c29 100644
--- a/src/http.lua
+++ b/src/http.lua
@@ -15,7 +15,6 @@ local mime = require("mime")
15local string = require("string") 15local string = require("string")
16local base = _G 16local base = _G
17local table = require("table") 17local table = require("table")
18local print = print
19module("socket.http") 18module("socket.http")
20 19
21----------------------------------------------------------------------------- 20-----------------------------------------------------------------------------
@@ -278,16 +277,16 @@ end
278function trequest(reqt) 277function trequest(reqt)
279 -- we loop until we get what we want, or 278 -- we loop until we get what we want, or
280 -- until we are sure there is no way to get it 279 -- until we are sure there is no way to get it
281 reqt = adjustrequest(reqt) 280 local nreqt = adjustrequest(reqt)
282 local h = open(reqt.host, reqt.port, reqt.create) 281 local h = open(nreqt.host, nreqt.port, nreqt.create)
283 -- send request line and headers 282 -- send request line and headers
284 h:sendrequestline(reqt.method, reqt.uri) 283 h:sendrequestline(nreqt.method, nreqt.uri)
285 h:sendheaders(reqt.headers) 284 h:sendheaders(nreqt.headers)
286 local code = 100 285 local code = 100
287 local headers, status 286 local headers, status
288 -- if there is a body, check for server status 287 -- if there is a body, check for server status
289 if reqt.source then 288 if nreqt.source then
290 h:sendbody(reqt.headers, reqt.source, reqt.step) 289 h:sendbody(nreqt.headers, nreqt.source, nreqt.step)
291 end 290 end
292 -- ignore any 100-continue messages 291 -- ignore any 100-continue messages
293 while code == 100 do 292 while code == 100 do
@@ -296,13 +295,13 @@ function trequest(reqt)
296 end 295 end
297 -- at this point we should have a honest reply from the server 296 -- at this point we should have a honest reply from the server
298 -- we can't redirect if we already used the source, so we report the error 297 -- we can't redirect if we already used the source, so we report the error
299 if shouldredirect(reqt, code, headers) and not reqt.source then 298 if shouldredirect(nreqt, code, headers) and not nreqt.source then
300 h:close() 299 h:close()
301 return tredirect(reqt, headers.location) 300 return tredirect(reqt, headers.location)
302 end 301 end
303 -- here we are finally done 302 -- here we are finally done
304 if shouldreceivebody(reqt, code) then 303 if shouldreceivebody(nreqt, code) then
305 h:receivebody(headers, reqt.sink, reqt.step) 304 h:receivebody(headers, nreqt.sink, nreqt.step)
306 end 305 end
307 h:close() 306 h:close()
308 return 1, code, headers, status 307 return 1, code, headers, status