Changeset

2596:187cd90860cb

mod_tls: Merged duplicate code.
author Waqas Hussain <waqas20@gmail.com>
date Fri, 12 Feb 2010 02:15:54 +0500
parents 2595:015934e20f03
children 2597:40a174e8cdf6 2600:1e6f3002e04f
files plugins/mod_tls.lua
diffstat 1 files changed, 8 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/plugins/mod_tls.lua	Fri Feb 12 01:56:18 2010 +0500
+++ b/plugins/mod_tls.lua	Fri Feb 12 02:15:54 2010 +0500
@@ -16,40 +16,25 @@
 
 local global_ssl_ctx = prosody.global_ssl_ctx;
 
-function c2s_starttls_handler(session, stanza)
+function starttls_handler(session, stanza)
 	if session.conn.starttls then
-		session.send(st.stanza("proceed", { xmlns = xmlns_starttls }));
+		(session.sends2s or session.send)(st.stanza("proceed", { xmlns = xmlns_starttls }));
 		session:reset_stream();
-		local ssl_ctx = session.host and hosts[session.host].ssl_ctx_in or global_ssl_ctx;
+		local host = session.to_host or session.host;
+		local ssl_ctx = host and hosts[host].ssl_ctx_in or global_ssl_ctx;
 		session.conn:starttls(ssl_ctx);
-		session.log("info", "TLS negotiation started...");
+		session.log("info", "TLS negotiation started for %s...", session.type);
 		session.secure = false;
 	else
 		-- FIXME: What reply?
-		session.log("warn", "Attempt to start TLS, but TLS is not available on this connection");
-	end
-end
-
-function s2s_starttls_handler(session, stanza)
-	if session.conn.starttls then
-		session.sends2s(st.stanza("proceed", { xmlns = xmlns_starttls }));
-		session:reset_stream();
-		local ssl_ctx = session.to_host and hosts[session.to_host].ssl_ctx_in or global_ssl_ctx;
-		session.conn:starttls(ssl_ctx);
-		session.log("info", "TLS negotiation started for incoming s2s...");
-		session.secure = false;
-	else
-		-- FIXME: What reply?
-		session.log("warn", "Attempt to start TLS, but TLS is not available on this s2s connection");
+		session.log("warn", "Attempt to start TLS, but TLS is not available on this %s connection", session.type);
 	end
 end
 
 module:hook("stanza/urn:ietf:params:xml:ns:xmpp-tls:starttls", function(event)
 	local origin, stanza = event.origin, event.stanza;
-	if origin.type == "c2s_unauthed" then
-		c2s_starttls_handler(origin, stanza);
-	elseif origin.type == "s2sin_unauthed" then
-		s2s_starttls_handler(origin, stanza);
+	if origin.type == "c2s_unauthed" or origin.type == "s2sin_unauthed" then
+		starttls_handler(origin, stanza);
 	else
 		-- FIXME: What reply?
 		origin.log("warn", "Attempt to start TLS, but TLS is not available on this %s connection", origin.type);