Mercurial > prosody-modules
changeset 340:5d306466f3f6
mod_auth_dovecot: Use hash of vhost as PID to pass to dovecot - the ID must be unique per process, whereas we make a connection per vhost.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Mon, 14 Feb 2011 01:27:35 +0000 |
parents | 5aa8229e8815 |
children | f801ce6826d5 |
files | mod_auth_dovecot/mod_auth_dovecot.lua |
diffstat | 1 files changed, 3 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/mod_auth_dovecot/mod_auth_dovecot.lua Sun Feb 13 23:30:11 2011 +0100 +++ b/mod_auth_dovecot/mod_auth_dovecot.lua Mon Feb 14 01:27:35 2011 +0000 @@ -12,7 +12,7 @@ local new_sasl = require "util.sasl".new; local nodeprep = require "util.encodings".stringprep.nodeprep; local base64 = require "util.encodings".base64; -local pposix = require "util.pposix"; +local sha1 = require "util.hashes".sha1; local prosody = prosody; local socket_path = module:get_option_string("dovecot_auth_socket", "/var/run/dovecot/auth-login"); @@ -22,6 +22,8 @@ log("debug", "initializing dovecot authentication provider for host '%s'", host); local conn; + -- Generate an id for this connection (must be a 31-bit number, unique per process) + local pid = tonumber(sha1(host, true):sub(1, 6), 16); -- Closes the socket function provider.close(self) @@ -48,7 +50,6 @@ end -- Send our handshake - local pid = pposix.getpid(); log("debug", "sending handshake to dovecot. version 1.1, cpid '%d'", pid); if not provider:send("VERSION\t1\t1\n") then return false