component.lua

Thu, 10 Jun 2021 11:58:23 +0200

author
Kim Alvefur <zash@zash.se>
date
Thu, 10 Jun 2021 11:58:23 +0200
changeset 445
b119dc4d8bc2
parent 411
db462d4feb44
child 485
c9a144591649
permissions
-rw-r--r--

plugins.smacks: Don't warn about zero stanzas acked

It's only if the count somehow goes backwards that something is really
wrong. An ack for zero stanzas is fine and we don't need to do anything.

84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1 local verse = require "verse";
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 local stream = verse.stream_mt;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4 local jid_split = require "util.jid".split;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5 local lxp = require "lxp";
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6 local st = require "util.stanza";
410
6171ef2a4025 component: Import sha1 via util.hashes
Kim Alvefur <zash@zash.se>
parents: 400
diff changeset
7 local sha1 = require "util.hashes".sha1;
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9 -- Shortcuts to save having to load util.stanza
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10 verse.message, verse.presence, verse.iq, verse.stanza, verse.reply, verse.error_reply =
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11 st.message, st.presence, st.iq, st.stanza, st.reply, st.error_reply;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12
161
b177bcea2006 squishy, verse.client, verse.component, verse.bosh: Port to util.xmppstream instead of xmlhandlers which has been removed from Prosody. Also remove util.ztact from squishy for the same reason.
Matthew Wild <mwild1@gmail.com>
parents: 150
diff changeset
13 local new_xmpp_stream = require "util.xmppstream".new;
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 local xmlns_stream = "http://etherx.jabber.org/streams";
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 local xmlns_component = "jabber:component:accept";
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 local stream_callbacks = {
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 stream_ns = xmlns_stream,
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 stream_tag = "stream",
150
728cc7f2f0c2 verse.component: Namespacing fixes
Matthew Wild <mwild1@gmail.com>
parents: 84
diff changeset
21 default_ns = xmlns_component };
411
db462d4feb44 verse: trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 410
diff changeset
22
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 function stream_callbacks.streamopened(stream, attr)
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 stream.stream_id = attr.id;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 if not stream:event("opened", attr) then
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 stream.notopen = nil;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 return true;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 function stream_callbacks.streamclosed(stream)
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 return stream:event("closed");
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 function stream_callbacks.handlestanza(stream, stanza)
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 if stanza.attr.xmlns == xmlns_stream then
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 return stream:event("stream-"..stanza.name, stanza);
150
728cc7f2f0c2 verse.component: Namespacing fixes
Matthew Wild <mwild1@gmail.com>
parents: 84
diff changeset
38 elseif stanza.attr.xmlns or stanza.name == "handshake" then
728cc7f2f0c2 verse.component: Namespacing fixes
Matthew Wild <mwild1@gmail.com>
parents: 84
diff changeset
39 return stream:event("stream/"..(stanza.attr.xmlns or xmlns_component), stanza);
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 return stream:event("stanza", stanza);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 function stream:reset()
161
b177bcea2006 squishy, verse.client, verse.component, verse.bosh: Port to util.xmppstream instead of xmlhandlers which has been removed from Prosody. Also remove util.ztact from squishy for the same reason.
Matthew Wild <mwild1@gmail.com>
parents: 150
diff changeset
46 if self.stream then
b177bcea2006 squishy, verse.client, verse.component, verse.bosh: Port to util.xmppstream instead of xmlhandlers which has been removed from Prosody. Also remove util.ztact from squishy for the same reason.
Matthew Wild <mwild1@gmail.com>
parents: 150
diff changeset
47 self.stream:reset();
b177bcea2006 squishy, verse.client, verse.component, verse.bosh: Port to util.xmppstream instead of xmlhandlers which has been removed from Prosody. Also remove util.ztact from squishy for the same reason.
Matthew Wild <mwild1@gmail.com>
parents: 150
diff changeset
48 else
b177bcea2006 squishy, verse.client, verse.component, verse.bosh: Port to util.xmppstream instead of xmlhandlers which has been removed from Prosody. Also remove util.ztact from squishy for the same reason.
Matthew Wild <mwild1@gmail.com>
parents: 150
diff changeset
49 self.stream = new_xmpp_stream(self, stream_callbacks);
b177bcea2006 squishy, verse.client, verse.component, verse.bosh: Port to util.xmppstream instead of xmlhandlers which has been removed from Prosody. Also remove util.ztact from squishy for the same reason.
Matthew Wild <mwild1@gmail.com>
parents: 150
diff changeset
50 end
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 self.notopen = true;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
52 return true;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
53 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
55 function stream:connect_component(jid, pass)
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
56 self.jid, self.password = jid, pass;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57 self.username, self.host, self.resource = jid_split(jid);
411
db462d4feb44 verse: trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 410
diff changeset
58
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
59 function self.data(conn, data)
161
b177bcea2006 squishy, verse.client, verse.component, verse.bosh: Port to util.xmppstream instead of xmlhandlers which has been removed from Prosody. Also remove util.ztact from squishy for the same reason.
Matthew Wild <mwild1@gmail.com>
parents: 150
diff changeset
60 local ok, err = self.stream:feed(data);
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
61 if ok then return; end
400
0db9cb909cf1 client, component: Fix logging of invalid XML
Matthew Wild <mwild1@gmail.com>
parents: 314
diff changeset
62 stream:debug("Received invalid XML (%s) %d bytes: %s", tostring(err), #data, data:sub(1, 300):gsub("[\r\n]+", " "));
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
63 stream:close("xml-not-well-formed");
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
64 end
411
db462d4feb44 verse: trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 410
diff changeset
65
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
66 self:hook("incoming-raw", function (data) return self.data(self.conn, data); end);
411
db462d4feb44 verse: trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 410
diff changeset
67
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
68 self.curr_id = 0;
411
db462d4feb44 verse: trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 410
diff changeset
69
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
70 self.tracked_iqs = {};
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
71 self:hook("stanza", function (stanza)
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
72 local id, type = stanza.attr.id, stanza.attr.type;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
73 if id and stanza.name == "iq" and (type == "result" or type == "error") and self.tracked_iqs[id] then
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
74 self.tracked_iqs[id](stanza);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
75 self.tracked_iqs[id] = nil;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
76 return true;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
77 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
78 end);
411
db462d4feb44 verse: trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents: 410
diff changeset
79
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
80 self:hook("stanza", function (stanza)
282
52b971d9ebc3 client, component: `ret` was probably meant to be a local
Kim Alvefur <zash@zash.se>
parents: 161
diff changeset
81 local ret;
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
82 if stanza.attr.xmlns == nil or stanza.attr.xmlns == "jabber:client" then
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
83 if stanza.name == "iq" and (stanza.attr.type == "get" or stanza.attr.type == "set") then
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 local xmlns = stanza.tags[1] and stanza.tags[1].attr.xmlns;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85 if xmlns then
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
86 ret = self:event("iq/"..xmlns, stanza);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 if not ret then
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
88 ret = self:event("iq", stanza);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
89 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 if ret == nil then
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92 self:send(verse.error_reply(stanza, "cancel", "service-unavailable"));
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
93 return true;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
94 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
95 else
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
96 ret = self:event(stanza.name, stanza);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
97 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
98 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
99 return ret;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
100 end, -1);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
101
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
102 self:hook("opened", function (attr)
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
103 print(self.jid, self.stream_id, attr.id);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
104 local token = sha1(self.stream_id..pass, true);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
105
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
106 self:send(st.stanza("handshake", { xmlns = xmlns_component }):text(token));
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
107 self:hook("stream/"..xmlns_component, function (stanza)
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
108 if stanza.name == "handshake" then
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
109 self:event("authentication-success");
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
110 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
111 end);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
112 end);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
113
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
114 local function stream_ready()
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
115 self:event("ready");
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
116 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
117 self:hook("authentication-success", stream_ready, -1);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
118
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
119 -- Initialise connection
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
120 self:connect(self.connect_host or self.host, self.connect_port or 5347);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
121 self:reopen();
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
122 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
123
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
124 function stream:reopen()
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
125 self:reset();
314
ee5fc3ee9150 component: allow binding to non-host jids (thanks mva)
Kim Alvefur <zash@zash.se>
parents: 282
diff changeset
126 self:send(st.stanza("stream:stream", { to = self.jid, ["xmlns:stream"]='http://etherx.jabber.org/streams',
84
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
127 xmlns = xmlns_component, version = "1.0" }):top_tag());
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
128 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
129
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
130 function stream:close(reason)
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
131 if not self.notopen then
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
132 self:send("</stream:stream>");
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
133 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
134 local on_disconnect = self.conn.disconnect();
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
135 self.conn:close();
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
136 on_disconnect(conn, reason);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
137 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
138
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
139 function stream:send_iq(iq, callback)
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
140 local id = self:new_id();
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
141 self.tracked_iqs[id] = callback;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
142 iq.attr.id = id;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
143 self:send(iq);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
144 end
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
145
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
146 function stream:new_id()
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
147 self.curr_id = self.curr_id + 1;
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
148 return tostring(self.curr_id);
d85d2443478e verse.component: XEP-0114 support \o/
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
149 end

mercurial