X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=libs%2Fhttpd%2Fluasrc%2Fhttpd%2Fserver.lua;fp=libs%2Fhttpd%2Fluasrc%2Fhttpd%2Fserver.lua;h=6cbffa188e79bdb10aace4e412824f5658b42186;hp=9ec8961b87f21d81b24e2ecf32b0f4fb1bedaeaf;hb=99261287419d9ecd91fde1f5107ffd6d8c9fceda;hpb=54e2e5ac399e55e4c759fb484d3d344359beda5c diff --git a/libs/httpd/luasrc/httpd/server.lua b/libs/httpd/luasrc/httpd/server.lua index 9ec8961b8..6cbffa188 100644 --- a/libs/httpd/luasrc/httpd/server.lua +++ b/libs/httpd/luasrc/httpd/server.lua @@ -112,7 +112,10 @@ function Server.process( self, client ) -- Setup sockets and sources local thread = { receive = function(self, ...) return luci.httpd.corecv(client, ...) end, - send = function(self, ...) return luci.httpd.cosend(client, ...) end + send = function(self, ...) return luci.httpd.cosend(client, ...) end, + close = function(self, ...) return client:close(...) end, + getfd = function(self, ...) return client:getfd(...) end, + dirty = function(self, ...) return client:dirty(...) end } client:settimeout( 0 ) @@ -132,7 +135,7 @@ function Server.process( self, client ) message, err = luci.http.protocol.parse_message_header( sourcehdr ) if not message then - self:error( client, 400, err ) + self:error( thread, 400, err ) break end @@ -152,7 +155,7 @@ function Server.process( self, client ) if message.http_version == 1.1 and message.headers['Expect'] and message.headers['Expect'] == '100-continue' then - client:send("HTTP/1.1 100 Continue\r\n\r\n") + thread:send("HTTP/1.1 100 Continue\r\n\r\n") end if message.headers['Transfer-Encoding'] and @@ -162,12 +165,12 @@ function Server.process( self, client ) sourcein = socket.source("by-length", thread, tonumber(message.env.CONTENT_LENGTH)) else - self:error( client, 411, luci.http.protocol.statusmsg[411] ) + self:error( thread, 411, luci.http.protocol.statusmsg[411] ) break; end else - self:error( client, 405, luci.http.protocol.statusmsg[405] ) + self:error( thread, 405, luci.http.protocol.statusmsg[405] ) break; end @@ -175,7 +178,7 @@ function Server.process( self, client ) local host = self.vhosts[message.env.HTTP_HOST] or self.host if not host then - self:error( client, 500, "Unable to find matching host" ) + self:error( thread, 500, "Unable to find matching host" ) break; end @@ -184,7 +187,7 @@ function Server.process( self, client ) client, io.stderr ) if not response then - self:error( client, 500, "Error processing handler" ) + self:error( thread, 500, "Error processing handler" ) end -- Post process response @@ -221,8 +224,8 @@ function Server.process( self, client ) header = header .. k .. ": " .. v .. "\r\n" end - client:send(header .. "\r\n") - + thread:send(header .. "\r\n") + if sourceout then local eof = false repeat