net/xmppcomponent_listener.lua

changeset 2279
27441b099984
parent 2162
8d33f94dc3a1
child 2466
0e44b6035210
equal deleted inserted replaced
2278:0b0fe49e5251 2279:27441b099984
116 end 116 end
117 end 117 end
118 end 118 end
119 session.send("</stream:stream>"); 119 session.send("</stream:stream>");
120 session.conn.close(); 120 session.conn.close();
121 component_listener.disconnect(session.conn, "stream error"); 121 component_listener.ondisconnect(session.conn, "stream error");
122 end 122 end
123 end 123 end
124 124
125 --- Component connlistener 125 --- Component connlistener
126 function component_listener.listener(conn, data) 126 function component_listener.onincoming(conn, data)
127 local session = sessions[conn]; 127 local session = sessions[conn];
128 if not session then 128 if not session then
129 local _send = conn.write; 129 local _send = conn.write;
130 session = { type = "component", conn = conn, send = function (data) return _send(tostring(data)); end }; 130 session = { type = "component", conn = conn, send = function (data) return _send(conn, tostring(data)); end };
131 sessions[conn] = session; 131 sessions[conn] = session;
132 132
133 -- Logging functions -- 133 -- Logging functions --
134 134
135 local conn_name = "jcp"..tostring(conn):match("[a-f0-9]+$"); 135 local conn_name = "jcp"..tostring(conn):match("[a-f0-9]+$");
155 if data then 155 if data then
156 session.data(conn, data); 156 session.data(conn, data);
157 end 157 end
158 end 158 end
159 159
160 function component_listener.disconnect(conn, err) 160 function component_listener.ondisconnect(conn, err)
161 local session = sessions[conn]; 161 local session = sessions[conn];
162 if session then 162 if session then
163 (session.log or log)("info", "component disconnected: %s (%s)", tostring(session.host), tostring(err)); 163 (session.log or log)("info", "component disconnected: %s (%s)", tostring(session.host), tostring(err));
164 if session.host then 164 if session.host then
165 log("debug", "Deregistering component"); 165 log("debug", "Deregistering component");
167 hosts[session.host].connected = nil; 167 hosts[session.host].connected = nil;
168 end 168 end
169 sessions[conn] = nil; 169 sessions[conn] = nil;
170 for k in pairs(session) do session[k] = nil; end 170 for k in pairs(session) do session[k] = nil; end
171 session = nil; 171 session = nil;
172 collectgarbage("collect");
173 end 172 end
174 end 173 end
175 174
176 connlisteners.register('xmppcomponent', component_listener); 175 connlisteners.register('xmppcomponent', component_listener);

mercurial