sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
authorKim Alvefur <zash@zash.se>
Fri, 30 Jan 2015 15:38:54 +0100
changeset 6564 bae84401a02c
parent 6562 0ef7ca5276a1
child 6566 f0a2bdfd0cea
sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
core/sessionmanager.lua
--- 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