Software /
code /
prosody-modules
Changeset
838:c9e2beec4ef6
mod_auth_dovecot: Improved error reporting.
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Fri, 28 Sep 2012 08:31:27 +0500 |
parents | 837:0ef11dee7050 |
children | 839:d297d76010d4 |
files | mod_auth_dovecot/auth_dovecot/mod_auth_dovecot.lua mod_auth_dovecot/auth_dovecot/sasl_dovecot.lib.lua |
diffstat | 2 files changed, 16 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_auth_dovecot/auth_dovecot/mod_auth_dovecot.lua Sat Sep 22 02:06:21 2012 +0200 +++ b/mod_auth_dovecot/auth_dovecot/mod_auth_dovecot.lua Fri Sep 28 08:31:27 2012 +0500 @@ -37,7 +37,10 @@ end do - local s = new_sasl(module.host) + local s, err = new_sasl(module.host) + if not s then + log("error", "%s", tostring(err)); + end assert(s, "Could not create a new SASL object"); assert(s.mechanisms, "SASL object has no mechanims method"); local m, _m = {}, s:mechanisms();
--- a/mod_auth_dovecot/auth_dovecot/sasl_dovecot.lib.lua Sat Sep 22 02:06:21 2012 +0200 +++ b/mod_auth_dovecot/auth_dovecot/sasl_dovecot.lib.lua Fri Sep 28 08:31:27 2012 +0500 @@ -62,27 +62,29 @@ end if not ok then - log("error", "error connecting to dovecot %s socket at '%s'. error was '%s'", socket_type, socket_path or socket_info, err); - return false; + return false, "error connecting to dovecot "..tostring(socket_type).." socket at '" + ..tostring(socket_path or socket_info).."'. error was '"..tostring(err).."'"; end -- Send our handshake pid = tonumber(tostring(conn):match("0x%x*$")); log("debug", "sending handshake to dovecot. version 1.1, cpid '%d'", pid); - if not conn:send("VERSION\t1\t1\n") then - return false + local success,err = conn:send("VERSION\t1\t1\n"); + if not success then + return false, "Unable to send version data to socket: "..tostring(err); end - if not conn:send("CPID\t" .. pid .. "\n") then - return false + local success,err = conn:send("CPID\t" .. pid .. "\n"); + if not success then + return false, "Unable to send PID to socket: "..tostring(err); end -- Parse Dovecot's handshake local done = false; supported_mechs = {}; while (not done) do - local line = conn:receive(); + local line, err = conn:receive(); if not line then - return false; + return false, "No data read from socket: "..tostring(err); end --log("debug", "dovecot handshake: '%s'", line); @@ -93,9 +95,8 @@ local major_version = parts(); if major_version ~= "1" then - log("error", "dovecot server version is not 1.x. it is %s.x", major_version); conn:close(); - return false; + return false, "dovecot server version is not 1.x. it is "..tostring(major_version)..".x"; end elseif first == "MECH" then local mech = parts(); @@ -118,7 +119,7 @@ if not conn then conn, mechs = connect(socket_info); if not conn then - return nil, "Socket connection failure"; + return nil, "Dovecot connection failure: "..tostring(mechs); end end sasl_i.conn, sasl_i.mechs = conn, mechs;