Annotate

core/sessionmanager.lua @ 11016:5176d9f727f6 0.11

net.http: Add request:cancel() method This is a new API that should be used in preference to http.destroy_request() when possible, as it ensures the callback is always called (with an error of course). APIs that have edge-cases where they don't call callbacks have, from experience, shown to be difficult to work with and often lead to unintentional leaks when the callback was expected to free up certain resources.
author Matthew Wild <mwild1@gmail.com>
date Sat, 08 Aug 2020 13:13:50 +0100
parent 9070:21730a3642fe
child 9908:7d12af856238
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1523
841d61be198f Remove version number from copyright headers
Matthew Wild <mwild1@gmail.com>
parents: 1479
diff changeset
1 -- Prosody IM
2923
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 2858
diff changeset
2 -- Copyright (C) 2008-2010 Matthew Wild
b7049746bd29 Update copyright headers for 2010
Matthew Wild <mwild1@gmail.com>
parents: 2858
diff changeset
3 -- Copyright (C) 2008-2010 Waqas Hussain
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
4 --
758
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 694
diff changeset
5 -- This project is MIT/X11 licensed. Please see the
b1885732e979 GPL->MIT!
Matthew Wild <mwild1@gmail.com>
parents: 694
diff changeset
6 -- COPYING file in the source package for more information.
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 429
diff changeset
7 --
7949
8acc35b5355a core: Allow select core modules to mutate some globals (needs luacheck 1.19)
Kim Alvefur <zash@zash.se>
parents: 7947
diff changeset
8 -- luacheck: globals prosody.full_sessions prosody.bare_sessions
519
cccd610a0ef9 Insert copyright/license headers
Matthew Wild <mwild1@gmail.com>
parents: 429
diff changeset
9
4981
95c18750b89e sessionmanager: Clean up some unused variables and imports
Matthew Wild <mwild1@gmail.com>
parents: 4961
diff changeset
10 local tostring, setmetatable = tostring, setmetatable;
95c18750b89e sessionmanager: Clean up some unused variables and imports
Matthew Wild <mwild1@gmail.com>
parents: 4961
diff changeset
11 local pairs, next= pairs, next;
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
12
8717
9ddd0fbbe53a core: Use prosody.hosts instead of _G.hosts for consistency
Kim Alvefur <zash@zash.se>
parents: 8555
diff changeset
13 local hosts = prosody.hosts;
6551
784fa05cf594 sessionmanager: Access bare_session and full_sessions through 'prosody'
Matthew Wild <mwild1@gmail.com>
parents: 6404
diff changeset
14 local full_sessions = prosody.full_sessions;
784fa05cf594 sessionmanager: Access bare_session and full_sessions through 'prosody'
Matthew Wild <mwild1@gmail.com>
parents: 6404
diff changeset
15 local bare_sessions = prosody.bare_sessions;
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
16
1684
645e18990211 core.sessionmanager, xmppclient_listener: Move responsibility for setting session.log to the former from the latter, much more sensible
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
17 local logger = require "util.logger";
645e18990211 core.sessionmanager, xmppclient_listener: Move responsibility for setting session.log to the former from the latter, much more sensible
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
18 local log = logger.init("sessionmanager");
101
c690fa382743 Added some roster management functions
Waqas Hussain <waqas20@gmail.com>
parents: 77
diff changeset
19 local rm_load_roster = require "core.rostermanager".load_roster;
429
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
20 local config_get = require "core.configmanager".get;
2832
8c754c61c72e sessionmanager: Added resource prepping, and invalid resource checking to the bind_resource function.
Waqas Hussain <waqas20@gmail.com>
parents: 2816
diff changeset
21 local resourceprep = require "util.encodings".stringprep.resourceprep;
3236
4727b2b0e069 sessionmanager: Moved nodeprep to sessionmanager.make_authenticated.
Waqas Hussain <waqas20@gmail.com>
parents: 3091
diff changeset
22 local nodeprep = require "util.encodings".stringprep.nodeprep;
8872
4d7a822e837f sessionmanager: Generate shorter random resoures
Kim Alvefur <zash@zash.se>
parents: 8717
diff changeset
23 local generate_identifier = require "util.id".short;
53
14ea0fe6ca86 Session destruction fixes, some debugging code while we fix the rest. Also change logger to be more useful.
Matthew Wild <mwild1@gmail.com>
parents: 49
diff changeset
24
3145
675241be2935 sessionmanager: Rename filters_initialize->initialize_filters
Matthew Wild <mwild1@gmail.com>
parents: 3143
diff changeset
25 local initialize_filters = require "util.filters".initialize;
569
5216efe6088b Add hostmanager, and eventmanager
Matthew Wild <mwild1@gmail.com>
parents: 565
diff changeset
26 local gettime = require "socket".gettime;
5216efe6088b Add hostmanager, and eventmanager
Matthew Wild <mwild1@gmail.com>
parents: 565
diff changeset
27
6779
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
28 local _ENV = nil;
8555
4f0f5b49bb03 vairious: Add annotation when an empty environment is set [luacheck]
Kim Alvefur <zash@zash.se>
parents: 8185
diff changeset
29 -- luacheck: std none
30
bcf539295f2d Huge commit to:
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30
6779
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
31 local function new_session(conn)
1469
9f2b6e2bc498 sessionmanager: Newly created sessions shouldn't have a priority. Fixes one of the stanza-gobbling bugs \o/
Matthew Wild <mwild1@gmail.com>
parents: 1450
diff changeset
32 local session = { conn = conn, type = "c2s_unauthed", conntime = gettime() };
3145
675241be2935 sessionmanager: Rename filters_initialize->initialize_filters
Matthew Wild <mwild1@gmail.com>
parents: 3143
diff changeset
33 local filter = initialize_filters(session);
30
bcf539295f2d Huge commit to:
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 local w = conn.write;
3143
887a6374f51c sessionmanager: Initialize new sessions for filtering, and add filters for outgoing bytes and stanzas
Matthew Wild <mwild1@gmail.com>
parents: 3091
diff changeset
35 session.send = function (t)
9069
22e5f11c778a sessionmanager, mod_s2s: Bring debug line for outgoing stanzas in line with that for incoming
Kim Alvefur <zash@zash.se>
parents: 9066
diff changeset
36 session.log("debug", "Sending[%s]: %s", session.type, t.top_tag and t:top_tag() or t:match("^[^>]*>?"));
3143
887a6374f51c sessionmanager: Initialize new sessions for filtering, and add filters for outgoing bytes and stanzas
Matthew Wild <mwild1@gmail.com>
parents: 3091
diff changeset
37 if t.name then
887a6374f51c sessionmanager: Initialize new sessions for filtering, and add filters for outgoing bytes and stanzas
Matthew Wild <mwild1@gmail.com>
parents: 3091
diff changeset
38 t = filter("stanzas/out", t);
887a6374f51c sessionmanager: Initialize new sessions for filtering, and add filters for outgoing bytes and stanzas
Matthew Wild <mwild1@gmail.com>
parents: 3091
diff changeset
39 end
887a6374f51c sessionmanager: Initialize new sessions for filtering, and add filters for outgoing bytes and stanzas
Matthew Wild <mwild1@gmail.com>
parents: 3091
diff changeset
40 if t then
887a6374f51c sessionmanager: Initialize new sessions for filtering, and add filters for outgoing bytes and stanzas
Matthew Wild <mwild1@gmail.com>
parents: 3091
diff changeset
41 t = filter("bytes/out", tostring(t));
887a6374f51c sessionmanager: Initialize new sessions for filtering, and add filters for outgoing bytes and stanzas
Matthew Wild <mwild1@gmail.com>
parents: 3091
diff changeset
42 if t then
7495
caee8a32983a sessionmanager: Make session.send() return true unless there really is an error [backported from 0.10]
Kim Alvefur <zash@zash.se>
parents: 6599
diff changeset
43 local ret, err = w(conn, t);
caee8a32983a sessionmanager: Make session.send() return true unless there really is an error [backported from 0.10]
Kim Alvefur <zash@zash.se>
parents: 6599
diff changeset
44 if not ret then
6916
d0ab0069145f sessionmanager: Demote write error to debug message
Kim Alvefur <zash@zash.se>
parents: 6915
diff changeset
45 session.log("debug", "Error writing to connection: %s", tostring(err));
6915
9d74373d621e sessionmanager: Clarify log message when failing to write data to connection
Kim Alvefur <zash@zash.se>
parents: 6842
diff changeset
46 return false, err;
7495
caee8a32983a sessionmanager: Make session.send() return true unless there really is an error [backported from 0.10]
Kim Alvefur <zash@zash.se>
parents: 6599
diff changeset
47 end
3143
887a6374f51c sessionmanager: Initialize new sessions for filtering, and add filters for outgoing bytes and stanzas
Matthew Wild <mwild1@gmail.com>
parents: 3091
diff changeset
48 end
887a6374f51c sessionmanager: Initialize new sessions for filtering, and add filters for outgoing bytes and stanzas
Matthew Wild <mwild1@gmail.com>
parents: 3091
diff changeset
49 end
7495
caee8a32983a sessionmanager: Make session.send() return true unless there really is an error [backported from 0.10]
Kim Alvefur <zash@zash.se>
parents: 6599
diff changeset
50 return true;
3143
887a6374f51c sessionmanager: Initialize new sessions for filtering, and add filters for outgoing bytes and stanzas
Matthew Wild <mwild1@gmail.com>
parents: 3091
diff changeset
51 end
2103
0e0bc74c64a0 sessionmanager: Use : syntax for calling connection methods
Matthew Wild <mwild1@gmail.com>
parents: 1929
diff changeset
52 session.ip = conn:ip();
5306
10bc0e2aa55e s2smanager: Generate session names used for logging the same way everywhere
Kim Alvefur <zash@zash.se>
parents: 5211
diff changeset
53 local conn_name = "c2s"..tostring(session):match("[a-f0-9]+$");
1684
645e18990211 core.sessionmanager, xmppclient_listener: Move responsibility for setting session.log to the former from the latter, much more sensible
Matthew Wild <mwild1@gmail.com>
parents: 1523
diff changeset
54 session.log = logger.init(conn_name);
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
55
30
bcf539295f2d Huge commit to:
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
56 return session;
bcf539295f2d Huge commit to:
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57 end
bcf539295f2d Huge commit to:
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
58
2746
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
59 local resting_session = { -- Resting, not dead
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
60 destroyed = true;
2915
f47bd0f7e2e6 sessionmanager, s2smanager: Add type of ?2s_destroyed to resting sessions (fixes a logging traceback, thanks Flo)
Matthew Wild <mwild1@gmail.com>
parents: 2752
diff changeset
61 type = "c2s_destroyed";
2750
4a6f32e6a8e5 sessionmanager: Add close method to resting sessions
Matthew Wild <mwild1@gmail.com>
parents: 2747
diff changeset
62 close = function (session)
4a6f32e6a8e5 sessionmanager: Add close method to resting sessions
Matthew Wild <mwild1@gmail.com>
parents: 2747
diff changeset
63 session.log("debug", "Attempt to close already-closed session");
4a6f32e6a8e5 sessionmanager: Add close method to resting sessions
Matthew Wild <mwild1@gmail.com>
parents: 2747
diff changeset
64 end;
6663
d3023dd07cb6 portmanager, s2smanager, sessionmanager, stanza_router, storagemanager, usermanager, util.xml: Add luacheck annotations
Matthew Wild <mwild1@gmail.com>
parents: 6619
diff changeset
65 filter = function (type, data) return data; end; --luacheck: ignore 212/type
2746
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
66 }; resting_session.__index = resting_session;
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
67
6779
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
68 local function retire_session(session)
6663
d3023dd07cb6 portmanager, s2smanager, sessionmanager, stanza_router, storagemanager, usermanager, util.xml: Add luacheck annotations
Matthew Wild <mwild1@gmail.com>
parents: 6619
diff changeset
69 local log = session.log or log; --luacheck: ignore 431/log
2746
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
70 for k in pairs(session) do
5447
92b88476873a sessionmanager, s2smanager: Remove open_session tracing
Matthew Wild <mwild1@gmail.com>
parents: 5377
diff changeset
71 if k ~= "log" and k ~= "id" then
2746
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
72 session[k] = nil;
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
73 end
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
74 end
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
75
4961
29b24a4028ed sessionmanager: Have session.send() of a retired session return false to indicate failure
Matthew Wild <mwild1@gmail.com>
parents: 4813
diff changeset
76 function session.send(data) log("debug", "Discarding data sent to resting session: %s", tostring(data)); return false; end
2746
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
77 function session.data(data) log("debug", "Discarding data received from resting session: %s", tostring(data)); end
7286
30b9433a9f3e Merge 0.10->trunk
Kim Alvefur <zash@zash.se>
parents: 7284
diff changeset
78 session.thread = { run = function (_, data) return session.data(data) end };
2746
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
79 return setmetatable(session, resting_session);
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
80 end
2857
6036c4b75235 sessionmanager, s2smanager: Give sessions dummy data handlers that log when data is received by a destroyed session
Matthew Wild <mwild1@gmail.com>
parents: 2832
diff changeset
81
6779
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
82 local function destroy_session(session, err)
7947
24170d74b00b core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7784
diff changeset
83 (session.log or log)("debug", "Destroying session for %s (%s@%s)%s",
24170d74b00b core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7784
diff changeset
84 session.full_jid or "(unknown)", session.username or "(unknown)",
24170d74b00b core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7784
diff changeset
85 session.host or "(unknown)", err and (": "..err) or "");
24170d74b00b core: Split some very long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents: 7784
diff changeset
86
2752
18d8009f06cb sessionmanager: Don't re-destroy destroyed sessions
Matthew Wild <mwild1@gmail.com>
parents: 2751
diff changeset
87 if session.destroyed then return; end
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
88
331
830fd67f9378 Quite some changes, to:
Matthew Wild <mwild1@gmail.com>
parents: 329
diff changeset
89 -- Remove session/resource from user's session list
1225
1e01a913baf5 sessionmanager: Fixed an old FIXME: A problem caused by an error on an authenticated but unbound session
Waqas Hussain <waqas20@gmail.com>
parents: 1224
diff changeset
90 if session.full_jid then
4230
23b68616b6d8 sessionmanager: Fire pre-resource-unbind to allow plugins (such as mod_smacks) to hook and prevent/override session destruction
Matthew Wild <mwild1@gmail.com>
parents: 3459
diff changeset
91 local host_session = hosts[session.host];
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
92
4230
23b68616b6d8 sessionmanager: Fire pre-resource-unbind to allow plugins (such as mod_smacks) to hook and prevent/override session destruction
Matthew Wild <mwild1@gmail.com>
parents: 3459
diff changeset
93 -- Allow plugins to prevent session destruction
23b68616b6d8 sessionmanager: Fire pre-resource-unbind to allow plugins (such as mod_smacks) to hook and prevent/override session destruction
Matthew Wild <mwild1@gmail.com>
parents: 3459
diff changeset
94 if host_session.events.fire_event("pre-resource-unbind", {session=session, error=err}) then
23b68616b6d8 sessionmanager: Fire pre-resource-unbind to allow plugins (such as mod_smacks) to hook and prevent/override session destruction
Matthew Wild <mwild1@gmail.com>
parents: 3459
diff changeset
95 return;
23b68616b6d8 sessionmanager: Fire pre-resource-unbind to allow plugins (such as mod_smacks) to hook and prevent/override session destruction
Matthew Wild <mwild1@gmail.com>
parents: 3459
diff changeset
96 end
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
97
4230
23b68616b6d8 sessionmanager: Fire pre-resource-unbind to allow plugins (such as mod_smacks) to hook and prevent/override session destruction
Matthew Wild <mwild1@gmail.com>
parents: 3459
diff changeset
98 host_session.sessions[session.username].sessions[session.resource] = nil;
1226
3b5f9dac2045 sessionmanager: Removed a redundant check
Waqas Hussain <waqas20@gmail.com>
parents: 1225
diff changeset
99 full_sessions[session.full_jid] = nil;
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
100
4230
23b68616b6d8 sessionmanager: Fire pre-resource-unbind to allow plugins (such as mod_smacks) to hook and prevent/override session destruction
Matthew Wild <mwild1@gmail.com>
parents: 3459
diff changeset
101 if not next(host_session.sessions[session.username].sessions) then
1225
1e01a913baf5 sessionmanager: Fixed an old FIXME: A problem caused by an error on an authenticated but unbound session
Waqas Hussain <waqas20@gmail.com>
parents: 1224
diff changeset
102 log("debug", "All resources of %s are now offline", session.username);
4230
23b68616b6d8 sessionmanager: Fire pre-resource-unbind to allow plugins (such as mod_smacks) to hook and prevent/override session destruction
Matthew Wild <mwild1@gmail.com>
parents: 3459
diff changeset
103 host_session.sessions[session.username] = nil;
1301
d10d84f755b5 sessionmanager: It really is username@host, not host@username :)
Waqas Hussain <waqas20@gmail.com>
parents: 1290
diff changeset
104 bare_sessions[session.username..'@'..session.host] = nil;
53
14ea0fe6ca86 Session destruction fixes, some debugging code while we fix the rest. Also change logger to be more useful.
Matthew Wild <mwild1@gmail.com>
parents: 49
diff changeset
105 end
2591
d540a75a11db sessionmanager: Fire resource-unbind event after removing session from sessions table
Matthew Wild <mwild1@gmail.com>
parents: 2580
diff changeset
106
4230
23b68616b6d8 sessionmanager: Fire pre-resource-unbind to allow plugins (such as mod_smacks) to hook and prevent/override session destruction
Matthew Wild <mwild1@gmail.com>
parents: 3459
diff changeset
107 host_session.events.fire_event("resource-unbind", {session=session, error=err});
53
14ea0fe6ca86 Session destruction fixes, some debugging code while we fix the rest. Also change logger to be more useful.
Matthew Wild <mwild1@gmail.com>
parents: 49
diff changeset
108 end
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
109
2746
3b9547fc0bed sessionmanager, s2smanager: Destroyed sessions are now simply resting (not dead) until they are collected - prevents a whole class of tracebacks
Matthew Wild <mwild1@gmail.com>
parents: 2622
diff changeset
110 retire_session(session);
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
111 end
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
112
6779
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
113 local function make_authenticated(session, username)
3236
4727b2b0e069 sessionmanager: Moved nodeprep to sessionmanager.make_authenticated.
Waqas Hussain <waqas20@gmail.com>
parents: 3091
diff changeset
114 username = nodeprep(username);
3239
5ea90ee96022 sessionmanager: Fixed a traceback on invalid usernames (typo in previous commit).
Waqas Hussain <waqas20@gmail.com>
parents: 3236
diff changeset
115 if not username or #username == 0 then return nil, "Invalid username"; end
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
116 session.username = username;
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
117 if session.type == "c2s_unauthed" then
7784
9f70d35a1602 core.sessionmanager, mod_saslauth: Introduce intermediate session type for authenticated but unbound sessions so that resource binding is not treated as a normal stanza
Kim Alvefur <zash@zash.se>
parents: 7496
diff changeset
118 session.type = "c2s_unbound";
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
119 end
1076
ba3639692493 sessionmanager: Miscellaneous logging improvements, changing levels, improving messages and using session loggers where possible
Matthew Wild <mwild1@gmail.com>
parents: 970
diff changeset
120 session.log("info", "Authenticated as %s@%s", username or "(unknown)", session.host or "(unknown)");
53
14ea0fe6ca86 Session destruction fixes, some debugging code while we fix the rest. Also change logger to be more useful.
Matthew Wild <mwild1@gmail.com>
parents: 49
diff changeset
121 return true;
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
122 end
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
123
304
7b28fa8bbfe5 Code cleanup for resource binding
Waqas Hussain <waqas20@gmail.com>
parents: 176
diff changeset
124 -- returns true, nil on success
7b28fa8bbfe5 Code cleanup for resource binding
Waqas Hussain <waqas20@gmail.com>
parents: 176
diff changeset
125 -- returns nil, err_type, err, err_message on failure
6779
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
126 local function bind_resource(session, resource)
304
7b28fa8bbfe5 Code cleanup for resource binding
Waqas Hussain <waqas20@gmail.com>
parents: 176
diff changeset
127 if not session.username then return nil, "auth", "not-authorized", "Cannot bind resource before authentication"; end
6599
f93e1b2ec327 sessionmanager: Return 'not-allowed' error instead of the non-existent 'already-bound' error when client tries to bind a resource twice on the same stream (thanks Flow) fixes issue #484.
Matthew Wild <mwild1@gmail.com>
parents: 5459
diff changeset
128 if session.resource then return nil, "cancel", "not-allowed", "Cannot bind multiple resources on a single connection"; end
304
7b28fa8bbfe5 Code cleanup for resource binding
Waqas Hussain <waqas20@gmail.com>
parents: 176
diff changeset
129 -- We don't support binding multiple resources
7b28fa8bbfe5 Code cleanup for resource binding
Waqas Hussain <waqas20@gmail.com>
parents: 176
diff changeset
130
6561
bae84401a02c sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
Kim Alvefur <zash@zash.se>
parents: 6551
diff changeset
131 local event_payload = { session = session, resource = resource };
bae84401a02c sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
Kim Alvefur <zash@zash.se>
parents: 6551
diff changeset
132 if hosts[session.host].events.fire_event("pre-resource-bind", event_payload) == false then
bae84401a02c sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
Kim Alvefur <zash@zash.se>
parents: 6551
diff changeset
133 local err = event_payload.error;
bae84401a02c sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
Kim Alvefur <zash@zash.se>
parents: 6551
diff changeset
134 if err then return nil, err.type, err.condition, err.text; end
bae84401a02c sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
Kim Alvefur <zash@zash.se>
parents: 6551
diff changeset
135 return nil, "cancel", "not-allowed";
bae84401a02c sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
Kim Alvefur <zash@zash.se>
parents: 6551
diff changeset
136 else
bae84401a02c sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
Kim Alvefur <zash@zash.se>
parents: 6551
diff changeset
137 -- In case a plugin wants to poke at it
bae84401a02c sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
Kim Alvefur <zash@zash.se>
parents: 6551
diff changeset
138 resource = event_payload.resource;
bae84401a02c sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
Kim Alvefur <zash@zash.se>
parents: 6551
diff changeset
139 end
bae84401a02c sessionmanager: Add pre-resource-bind event that would let plugins have a say in resource binding
Kim Alvefur <zash@zash.se>
parents: 6551
diff changeset
140
2832
8c754c61c72e sessionmanager: Added resource prepping, and invalid resource checking to the bind_resource function.
Waqas Hussain <waqas20@gmail.com>
parents: 2816
diff changeset
141 resource = resourceprep(resource);
8872
4d7a822e837f sessionmanager: Generate shorter random resoures
Kim Alvefur <zash@zash.se>
parents: 8717
diff changeset
142 resource = resource ~= "" and resource or generate_identifier();
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
143 --FIXME: Randomly-generated resources must be unique per-user, and never conflict with existing
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
144
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
145 if not hosts[session.host].sessions[session.username] then
1224
35fa588e43a6 sessionmanager: Add/remove sessions from full_sessions and bare_sessions when binding/unbinding sessions
Waqas Hussain <waqas20@gmail.com>
parents: 1223
diff changeset
146 local sessions = { sessions = {} };
35fa588e43a6 sessionmanager: Add/remove sessions from full_sessions and bare_sessions when binding/unbinding sessions
Waqas Hussain <waqas20@gmail.com>
parents: 1223
diff changeset
147 hosts[session.host].sessions[session.username] = sessions;
1290
c253905a8a55 sessionmanager: It's username@host, not host@username :)
Matthew Wild <mwild1@gmail.com>
parents: 1226
diff changeset
148 bare_sessions[session.username..'@'..session.host] = sessions;
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
149 else
429
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
150 local sessions = hosts[session.host].sessions[session.username].sessions;
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
151 if sessions[resource] then
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
152 -- Resource conflict
5377
898454038524 core.*: Complete removal of all traces of the "core" section and section-related code.
Kim Alvefur <zash@zash.se>
parents: 5306
diff changeset
153 local policy = config_get(session.host, "conflict_resolve");
429
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
154 local increment;
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
155 if policy == "random" then
8872
4d7a822e837f sessionmanager: Generate shorter random resoures
Kim Alvefur <zash@zash.se>
parents: 8717
diff changeset
156 resource = generate_identifier();
429
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
157 increment = true;
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
158 elseif policy == "increment" then
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
159 increment = true; -- TODO ping old resource
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
160 elseif policy == "kick_new" then
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
161 return nil, "cancel", "conflict", "Resource already exists";
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
162 else -- if policy == "kick_old" then
791
a4be1d80775c Fixed: kick_old resource conflict resolution policy could fail with a backtrace
Waqas Hussain <waqas20@gmail.com>
parents: 760
diff changeset
163 sessions[resource]:close {
429
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
164 condition = "conflict";
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
165 text = "Replaced by new connection";
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
166 };
791
a4be1d80775c Fixed: kick_old resource conflict resolution policy could fail with a backtrace
Waqas Hussain <waqas20@gmail.com>
parents: 760
diff changeset
167 if not next(sessions) then
a4be1d80775c Fixed: kick_old resource conflict resolution policy could fail with a backtrace
Waqas Hussain <waqas20@gmail.com>
parents: 760
diff changeset
168 hosts[session.host].sessions[session.username] = { sessions = sessions };
1471
8b3753b080fc sessionmanager: Reset bare_sessions[user] after resource conflict resolution. Fixes the other stanza gobbling bug \o/
Matthew Wild <mwild1@gmail.com>
parents: 1469
diff changeset
169 bare_sessions[session.username.."@"..session.host] = hosts[session.host].sessions[session.username];
791
a4be1d80775c Fixed: kick_old resource conflict resolution policy could fail with a backtrace
Waqas Hussain <waqas20@gmail.com>
parents: 760
diff changeset
170 end
429
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
171 end
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
172 if increment and sessions[resource] then
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
173 local count = 1;
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
174 while sessions[resource.."#"..count] do
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
175 count = count + 1;
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
176 end
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
177 resource = resource.."#"..count;
b1d86f89fa27 Added options to limit the number of resources and for handling of resource conflicts
Waqas Hussain <waqas20@gmail.com>
parents: 357
diff changeset
178 end
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
179 end
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
180 end
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
181
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
182 session.resource = resource;
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
183 session.full_jid = session.username .. '@' .. session.host .. '/' .. resource;
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
184 hosts[session.host].sessions[session.username].sessions[resource] = session;
1224
35fa588e43a6 sessionmanager: Add/remove sessions from full_sessions and bare_sessions when binding/unbinding sessions
Waqas Hussain <waqas20@gmail.com>
parents: 1223
diff changeset
185 full_sessions[session.full_jid] = session;
7784
9f70d35a1602 core.sessionmanager, mod_saslauth: Introduce intermediate session type for authenticated but unbound sessions so that resource binding is not treated as a normal stanza
Kim Alvefur <zash@zash.se>
parents: 7496
diff changeset
186 if session.type == "c2s_unbound" then
9f70d35a1602 core.sessionmanager, mod_saslauth: Introduce intermediate session type for authenticated but unbound sessions so that resource binding is not treated as a normal stanza
Kim Alvefur <zash@zash.se>
parents: 7496
diff changeset
187 session.type = "c2s";
9f70d35a1602 core.sessionmanager, mod_saslauth: Introduce intermediate session type for authenticated but unbound sessions so that resource binding is not treated as a normal stanza
Kim Alvefur <zash@zash.se>
parents: 7496
diff changeset
188 end
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
189
3088
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
190 local err;
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
191 session.roster, err = rm_load_roster(session.username, session.host);
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
192 if err then
8184
dbcae15b4282 sessionmanager: Revert session.type if binding fails due to roster load error
Matthew Wild <mwild1@gmail.com>
parents: 7949
diff changeset
193 -- FIXME: Why is all this rollback down here, instead of just doing the roster test up above?
3088
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
194 full_sessions[session.full_jid] = nil;
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
195 hosts[session.host].sessions[session.username].sessions[resource] = nil;
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
196 session.full_jid = nil;
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
197 session.resource = nil;
8184
dbcae15b4282 sessionmanager: Revert session.type if binding fails due to roster load error
Matthew Wild <mwild1@gmail.com>
parents: 7949
diff changeset
198 if session.type == "c2s" then
dbcae15b4282 sessionmanager: Revert session.type if binding fails due to roster load error
Matthew Wild <mwild1@gmail.com>
parents: 7949
diff changeset
199 session.type = "c2s_unbound";
dbcae15b4282 sessionmanager: Revert session.type if binding fails due to roster load error
Matthew Wild <mwild1@gmail.com>
parents: 7949
diff changeset
200 end
3091
d6a059af2077 rostermanager: Correctly clear the bare_sessions table on roster load errors during bind.
Waqas Hussain <waqas20@gmail.com>
parents: 3089
diff changeset
201 if next(bare_sessions[session.username..'@'..session.host].sessions) == nil then
3088
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
202 bare_sessions[session.username..'@'..session.host] = nil;
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
203 hosts[session.host].sessions[session.username] = nil;
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
204 end
5211
80635a6cb126 sessionmanager: Log the actual error message when roster loading fails.
Waqas Hussain <waqas20@gmail.com>
parents: 4995
diff changeset
205 session.log("error", "Roster loading failed: %s", err);
3088
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
206 return nil, "cancel", "internal-server-error", "Error loading roster";
a233aa051125 sessionmanager: If roster loading fails during resource bind, kick the user with an internal-server-error.
Waqas Hussain <waqas20@gmail.com>
parents: 2925
diff changeset
207 end
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
208
1478
da11f2652ae9 sessionmanager: Replace raw session by an event data table for resource bind/unbind events, allowing extra data
Waqas Hussain <waqas20@gmail.com>
parents: 1471
diff changeset
209 hosts[session.host].events.fire_event("resource-bind", {session=session});
5776
bd0ff8ae98a8 Remove all trailing whitespace
Florian Zeitz <florob@babelmonkeys.de>
parents: 5459
diff changeset
210
38
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
211 return true;
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
212 end
Matthew Wild <mwild1@gmail.com>
parents: 30
diff changeset
213
6779
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
214 local function send_to_available_resources(username, host, stanza)
6619
78d1706982b2 sessionmanager: Rename parameter to avoid varible name conflict
Matthew Wild <mwild1@gmail.com>
parents: 6602
diff changeset
215 local jid = username.."@"..host;
176
e5cd2a03891d Outbound presence subscription
Waqas Hussain <waqas20@gmail.com>
parents: 175
diff changeset
216 local count = 0;
2140
94b7ba39787d sessionmanager: Fixed and cleaned function send_to_available_resources(). The 'to' attribute for presence subscription stanzas is now preserved.
Waqas Hussain <waqas20@gmail.com>
parents: 1929
diff changeset
217 local user = bare_sessions[jid];
94b7ba39787d sessionmanager: Fixed and cleaned function send_to_available_resources(). The 'to' attribute for presence subscription stanzas is now preserved.
Waqas Hussain <waqas20@gmail.com>
parents: 1929
diff changeset
218 if user then
6676
a536978e0f01 sessionmanager: Rename unused loop variables to '_' [luacheck]
Matthew Wild <mwild1@gmail.com>
parents: 6663
diff changeset
219 for _, session in pairs(user.sessions) do
2140
94b7ba39787d sessionmanager: Fixed and cleaned function send_to_available_resources(). The 'to' attribute for presence subscription stanzas is now preserved.
Waqas Hussain <waqas20@gmail.com>
parents: 1929
diff changeset
220 if session.presence then
94b7ba39787d sessionmanager: Fixed and cleaned function send_to_available_resources(). The 'to' attribute for presence subscription stanzas is now preserved.
Waqas Hussain <waqas20@gmail.com>
parents: 1929
diff changeset
221 session.send(stanza);
94b7ba39787d sessionmanager: Fixed and cleaned function send_to_available_resources(). The 'to' attribute for presence subscription stanzas is now preserved.
Waqas Hussain <waqas20@gmail.com>
parents: 1929
diff changeset
222 count = count + 1;
175
5f71d290bb44 Routing code reorganization
Waqas Hussain <waqas20@gmail.com>
parents: 156
diff changeset
223 end
5f71d290bb44 Routing code reorganization
Waqas Hussain <waqas20@gmail.com>
parents: 156
diff changeset
224 end
5f71d290bb44 Routing code reorganization
Waqas Hussain <waqas20@gmail.com>
parents: 156
diff changeset
225 end
176
e5cd2a03891d Outbound presence subscription
Waqas Hussain <waqas20@gmail.com>
parents: 175
diff changeset
226 return count;
175
5f71d290bb44 Routing code reorganization
Waqas Hussain <waqas20@gmail.com>
parents: 156
diff changeset
227 end
5f71d290bb44 Routing code reorganization
Waqas Hussain <waqas20@gmail.com>
parents: 156
diff changeset
228
6779
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
229 local function send_to_interested_resources(username, host, stanza)
6677
1089f45c5e67 sessionmanager: Rename argument to avoid name clash with local variable [luacheck]
Matthew Wild <mwild1@gmail.com>
parents: 6676
diff changeset
230 local jid = username.."@"..host;
2141
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
231 local count = 0;
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
232 local user = bare_sessions[jid];
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
233 if user then
6676
a536978e0f01 sessionmanager: Rename unused loop variables to '_' [luacheck]
Matthew Wild <mwild1@gmail.com>
parents: 6663
diff changeset
234 for _, session in pairs(user.sessions) do
2141
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
235 if session.interested then
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
236 session.send(stanza);
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
237 count = count + 1;
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
238 end
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
239 end
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
240 end
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
241 return count;
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
242 end
f544729f9228 sessionmanager: Added function send_to_interested_resources().
Waqas Hussain <waqas20@gmail.com>
parents: 2140
diff changeset
243
6779
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
244 return {
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
245 new_session = new_session;
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
246 retire_session = retire_session;
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
247 destroy_session = destroy_session;
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
248 make_authenticated = make_authenticated;
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
249 bind_resource = bind_resource;
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
250 send_to_available_resources = send_to_available_resources;
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
251 send_to_interested_resources = send_to_interested_resources;
6236668da30a core.*: Remove use of module() function
Kim Alvefur <zash@zash.se>
parents: 6677
diff changeset
252 };