Mercurial > prosody-hg
comparison net/http/server.lua @ 4713:9c15fa5192d3
net.http.server: Fire http-error 400 if request fails sanity checks
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 26 Apr 2012 16:11:08 +0100 |
| parents | 54ca6511e699 |
| children | 4d6ebe54671e |
comparison
equal
deleted
inserted
replaced
| 4712:4fc99f1b7570 | 4713:9c15fa5192d3 |
|---|---|
| 168 send = _M.send_response; | 168 send = _M.send_response; |
| 169 finish_cb = finish_cb; | 169 finish_cb = finish_cb; |
| 170 }; | 170 }; |
| 171 conn._http_open_response = response; | 171 conn._http_open_response = response; |
| 172 | 172 |
| 173 local err; | |
| 173 if not request.headers.host then | 174 if not request.headers.host then |
| 175 err = "No 'Host' header"; | |
| 176 elseif not request.path then | |
| 177 err = "Invalid path"; | |
| 178 end | |
| 179 | |
| 180 if err then | |
| 174 response.status_code = 400; | 181 response.status_code = 400; |
| 175 response.headers.content_type = "text/html"; | 182 response.headers.content_type = "text/html"; |
| 176 response:send(events.fire_event("http-error", { code = 400, message = "No 'Host' header" })); | 183 response:send(events.fire_event("http-error", { code = 400, message = err })); |
| 177 else | 184 else |
| 178 local host = request.headers.host; | 185 local host = request.headers.host; |
| 179 if host then | 186 if host then |
| 180 host = host:match("[^:]*"):lower(); | 187 host = host:match("[^:]*"):lower(); |
| 181 local event = request.method.." "..host..request.path:match("[^?]*"); | 188 local event = request.method.." "..host..request.path:match("[^?]*"); |
