CBI: Cancelaction and event callbacks for Delegators
LuCId: Send Keep-Alive headers to avoid browser quirks
This commit is contained in:
parent
c47765a611
commit
36e18e87ef
3 changed files with 25 additions and 3 deletions
|
@ -506,6 +506,7 @@ function Delegator.__init__(self, ...)
|
|||
self.pageaction = false
|
||||
self.readinput = true
|
||||
self.allow_reset = false
|
||||
self.allow_cancel = false
|
||||
self.allow_back = false
|
||||
self.allow_finish = false
|
||||
self.template = "cbi/delegator"
|
||||
|
@ -559,6 +560,17 @@ function Delegator.get(self, name)
|
|||
end
|
||||
|
||||
function Delegator.parse(self, ...)
|
||||
if self.allow_cancel and Map.formvalue(self, "cbi.cancel") then
|
||||
if self.on_cancel then
|
||||
self:on_cancel()
|
||||
return FORM_DONE
|
||||
end
|
||||
end
|
||||
|
||||
if self.on_init and not Map.formvalue(self, "cbi.delg.current") then
|
||||
self:on_init()
|
||||
end
|
||||
|
||||
local newcurrent
|
||||
self.chain = self.chain or self:get_chain()
|
||||
self.current = self.current or self:get_active()
|
||||
|
@ -587,6 +599,9 @@ function Delegator.parse(self, ...)
|
|||
if not Map.formvalue(self, "cbi.submit") then
|
||||
return FORM_NODATA
|
||||
elseif not newcurrent or not self:get(newcurrent) then
|
||||
if self.on_done then
|
||||
self:on_done()
|
||||
end
|
||||
return FORM_DONE
|
||||
else
|
||||
self.current = newcurrent
|
||||
|
|
|
@ -23,6 +23,9 @@ $Id$
|
|||
<% if self.allow_reset then %>
|
||||
<input class="cbi-button cbi-button-reset" type="reset" value="<%:reset%>" />
|
||||
<% end %>
|
||||
<% if self.allow_cancel then %>
|
||||
<input class="cbi-button cbi-button-cancel" type="submit" name="cbi.cancel" value="<%:cancel%>" />
|
||||
<% end %>
|
||||
<% if self.allow_finish and not self:get_next(self.current) then %>
|
||||
<input class="cbi-button cbi-button-finish" type="submit" value="<%:cbi_finish Finish%>" />
|
||||
<% elseif self:get_next(self.current) then %>
|
||||
|
|
|
@ -419,8 +419,8 @@ function Server.process(self, client, env)
|
|||
set_memory_limit(env.config.memlimit)
|
||||
end
|
||||
|
||||
client:setsockopt("socket", "rcvtimeo", 60)
|
||||
client:setsockopt("socket", "sndtimeo", 60)
|
||||
client:setsockopt("socket", "rcvtimeo", 5)
|
||||
client:setsockopt("socket", "sndtimeo", 5)
|
||||
|
||||
repeat
|
||||
-- parse headers
|
||||
|
@ -531,7 +531,11 @@ function Server.process(self, client, env)
|
|||
headers["Connection"] = "close"
|
||||
elseif message.env.SERVER_PROTOCOL == "HTTP/1.0" then
|
||||
headers["Connection"] = "Keep-Alive"
|
||||
end
|
||||
end
|
||||
|
||||
if not close then
|
||||
headers["Keep-Alive"] = "timeout=5, max=50"
|
||||
end
|
||||
|
||||
headers["Date"] = date.to_http(os.time())
|
||||
local header = {
|
||||
|
|
Loading…
Reference in a new issue