mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-01-03 02:32:03 +00:00
MINOR: hlua_fcn/mailers: handle timeout mail from mailers section
As the example/lua/mailers.lua script does its best to mimic the c-mailer implementation, it should support the "timeout mail" directive as well. This could be backported in 2.8.
This commit is contained in:
parent
b2f7069479
commit
b58bd9794f
@ -1198,6 +1198,12 @@ ProxyMailers class
|
|||||||
Each array entry is a name:desc pair where desc represents the full server
|
Each array entry is a name:desc pair where desc represents the full server
|
||||||
address (including port) as described in haproxy's configuration file.
|
address (including port) as described in haproxy's configuration file.
|
||||||
|
|
||||||
|
.. js:attribute:: ProxyMailers.mailservers_timeout
|
||||||
|
|
||||||
|
An integer representing the maximum time in milliseconds to wait for the
|
||||||
|
email to be sent. See "timeout mail" directive from "mailers" section in
|
||||||
|
haproxy configuration file.
|
||||||
|
|
||||||
.. js:attribute:: ProxyMailers.smtp_hostname
|
.. js:attribute:: ProxyMailers.smtp_hostname
|
||||||
|
|
||||||
A string containing the hostname to use for the SMTP transaction.
|
A string containing the hostname to use for the SMTP transaction.
|
||||||
|
@ -30,7 +30,9 @@ local mailqueue = core.queue()
|
|||||||
-- same format used in haproxy config file. It will be passed as it is to
|
-- same format used in haproxy config file. It will be passed as it is to
|
||||||
-- tcp::connect() without explicit port argument. See Socket.connect()
|
-- tcp::connect() without explicit port argument. See Socket.connect()
|
||||||
-- manual for more information.
|
-- manual for more information.
|
||||||
function smtp_send_email(server, domain, from, to, data)
|
--
|
||||||
|
-- The function will abort after <timeout> ms
|
||||||
|
function smtp_send_email(server, timeout, domain, from, to, data)
|
||||||
local ret
|
local ret
|
||||||
local reason
|
local reason
|
||||||
local tcp = core.tcp()
|
local tcp = core.tcp()
|
||||||
@ -55,6 +57,10 @@ function smtp_send_email(server, domain, from, to, data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if timeout ~= 0 then
|
||||||
|
tcp:settimeout(timeout / 1000)
|
||||||
|
end
|
||||||
|
|
||||||
if tcp:connect(server) == nil then
|
if tcp:connect(server) == nil then
|
||||||
return false, "Can't connect to \""..server.."\""
|
return false, "Can't connect to \""..server.."\""
|
||||||
end
|
end
|
||||||
@ -406,6 +412,7 @@ core.register_task(function()
|
|||||||
for name, mailsrv in pairs(job.mailconf.mailservers) do
|
for name, mailsrv in pairs(job.mailconf.mailservers) do
|
||||||
-- finally, send email to server
|
-- finally, send email to server
|
||||||
local ret, reason = smtp_send_email(mailsrv,
|
local ret, reason = smtp_send_email(mailsrv,
|
||||||
|
job.mailconf.mailservers_timeout,
|
||||||
job.mailconf.smtp_hostname,
|
job.mailconf.smtp_hostname,
|
||||||
job.mailconf.smtp_from,
|
job.mailconf.smtp_from,
|
||||||
job.mailconf.smtp_to,
|
job.mailconf.smtp_to,
|
||||||
|
@ -2134,6 +2134,11 @@ int hlua_proxy_get_mailers(lua_State *L)
|
|||||||
}
|
}
|
||||||
lua_settable(L, -3);
|
lua_settable(L, -3);
|
||||||
|
|
||||||
|
/* mailers timeout (from mailers section) */
|
||||||
|
lua_pushstring(L, "mailservers_timeout");
|
||||||
|
lua_pushinteger(L, px->email_alert.mailers.m->timeout.mail);
|
||||||
|
lua_settable(L, -3);
|
||||||
|
|
||||||
/* email-alert myhostname */
|
/* email-alert myhostname */
|
||||||
lua_pushstring(L, "smtp_hostname");
|
lua_pushstring(L, "smtp_hostname");
|
||||||
lua_pushstring(L, px->email_alert.myhostname);
|
lua_pushstring(L, px->email_alert.myhostname);
|
||||||
|
Loading…
Reference in New Issue
Block a user