Mercurial > prosody-modules
comparison mod_s2s_auth_dane/mod_s2s_auth_dane.lua @ 1367:103d685e2153
mod_s2s_auth_dane: Pause s2sin while doing SRV and TLSA lookups, fixes race condition (Can haz util.async plz)
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 20 Mar 2014 15:31:15 +0100 |
| parents | 920ac9a8480b |
| children | 5724008bbdb1 |
comparison
equal
deleted
inserted
replaced
| 1366:f581210093a7 | 1367:103d685e2153 |
|---|---|
| 106 end | 106 end |
| 107 | 107 |
| 108 function module.add_host(module) | 108 function module.add_host(module) |
| 109 module:hook("s2s-stream-features", function(event) | 109 module:hook("s2s-stream-features", function(event) |
| 110 -- dane_lookup(origin, origin.from_host); | 110 -- dane_lookup(origin, origin.from_host); |
| 111 dane_lookup(event.origin); | 111 local host_session = event.origin; |
| 112 end, 1); | 112 host_session.log("debug", "Pausing connection until DANE lookup is completed"); |
| 113 host_session.conn:pause() | |
| 114 local function resume() | |
| 115 module:log("eebug", "Resuming connection"); | |
| 116 host_session.conn:resume() | |
| 117 end | |
| 118 if not dane_lookup(host_session, resume) then | |
| 119 resume(); | |
| 120 end | |
| 121 end, 10); | |
| 113 | 122 |
| 114 module:hook("s2s-authenticated", function(event) | 123 module:hook("s2s-authenticated", function(event) |
| 115 local session = event.session; | 124 local session = event.session; |
| 116 if session.dane and not session.secure then | 125 if session.dane and not session.secure then |
| 117 -- TLSA record but no TLS, not ok. | 126 -- TLSA record but no TLS, not ok. |
