Changeset

6561:bae84401a02c

sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
author Kim Alvefur <zash@zash.se>
date Fri, 30 Jan 2015 15:38:54 +0100
parents 6559:0ef7ca5276a1
children 6563:f0a2bdfd0cea
files core/sessionmanager.lua
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/core/sessionmanager.lua	Mon Jan 26 15:25:16 2015 +0100
+++ b/core/sessionmanager.lua	Fri Jan 30 15:38:54 2015 +0100
@@ -117,6 +117,16 @@
 	if session.resource then return nil, "cancel", "already-bound", "Cannot bind multiple resources on a single connection"; end
 	-- We don't support binding multiple resources
 
+	local event_payload = { session = session, resource = resource };
+	if hosts[session.host].events.fire_event("pre-resource-bind", event_payload) == false then
+		local err = event_payload.error;
+		if err then return nil, err.type, err.condition, err.text; end
+		return nil, "cancel", "not-allowed";
+	else
+		-- In case a plugin wants to poke at it
+		resource = event_payload.resource;
+	end
+
 	resource = resourceprep(resource);
 	resource = resource ~= "" and resource or uuid_generate();
 	--FIXME: Randomly-generated resources must be unique per-user, and never conflict with existing