aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/sessionmanager.lua4
-rw-r--r--util/uuid.lua9
2 files changed, 11 insertions, 2 deletions
diff --git a/core/sessionmanager.lua b/core/sessionmanager.lua
index f19721ed..f2542ed2 100644
--- a/core/sessionmanager.lua
+++ b/core/sessionmanager.lua
@@ -12,7 +12,7 @@ local hosts = hosts;
local modulemanager = require "core.modulemanager";
local log = require "util.logger".init("sessionmanager");
local error = error;
-
+local uuid_generate = require "util.uuid".uuid_generate;
module "sessionmanager"
function new_session(conn)
@@ -41,7 +41,7 @@ end
function bind_resource(session, resource)
if not session.username then return false, "auth"; end
if session.resource then return false, "constraint"; end -- We don't support binding multiple resources
- resource = resource or math.random(100000, 99999999); -- FIXME: Clearly we have issues :)
+ resource = resource or uuid_generate();
--FIXME: Randomly-generated resources must be unique per-user, and never conflict with existing
if not hosts[session.host].sessions[session.username] then
diff --git a/util/uuid.lua b/util/uuid.lua
new file mode 100644
index 00000000..489522aa
--- /dev/null
+++ b/util/uuid.lua
@@ -0,0 +1,9 @@
+
+local m_random = math.random;
+module "uuid"
+
+function uuid_generate()
+ return m_random(0, 99999999);
+end
+
+return _M; \ No newline at end of file