aboutsummaryrefslogtreecommitdiff
path: root/xmpp-vala/src
diff options
context:
space:
mode:
Diffstat (limited to 'xmpp-vala/src')
-rw-r--r--xmpp-vala/src/core/stanza_reader.vala2
-rw-r--r--xmpp-vala/src/module/xep/0166_jingle.vala2
-rw-r--r--xmpp-vala/src/module/xep/0234_jingle_file_transfer.vala9
-rw-r--r--xmpp-vala/src/util.vala50
4 files changed, 58 insertions, 5 deletions
diff --git a/xmpp-vala/src/core/stanza_reader.vala b/xmpp-vala/src/core/stanza_reader.vala
index c90390b5..1727847d 100644
--- a/xmpp-vala/src/core/stanza_reader.vala
+++ b/xmpp-vala/src/core/stanza_reader.vala
@@ -52,8 +52,6 @@ public class StanzaReader {
buffer_fill = (int) yield ((!)input).read_async(buffer, GLib.Priority.DEFAULT, cancellable);
if (buffer_fill == 0) throw new XmlError.EOF("End of input stream reached.");
buffer_pos = 0;
- } catch (TlsError e) {
- throw new XmlError.TLS("TlsError: %s".printf(e.message));
} catch (GLib.IOError e) {
throw new XmlError.IO("GLib.IOError: %s".printf(e.message));
}
diff --git a/xmpp-vala/src/module/xep/0166_jingle.vala b/xmpp-vala/src/module/xep/0166_jingle.vala
index 06e3d5c8..86396f30 100644
--- a/xmpp-vala/src/module/xep/0166_jingle.vala
+++ b/xmpp-vala/src/module/xep/0166_jingle.vala
@@ -543,7 +543,7 @@ public class Session {
throw new IqError.BAD_REQUEST("session-accept with unnegotiated transport method");
}
transport.on_transport_accept(content.transport);
- StanzaNode description = content.description; // TODO(hrxi): handle this :P
+ // TODO(hrxi): handle content.description :)
stream.get_module(Iq.Module.IDENTITY).send_iq(stream, new Iq.Stanza.result(iq));
state = State.CONNECTING;
diff --git a/xmpp-vala/src/module/xep/0234_jingle_file_transfer.vala b/xmpp-vala/src/module/xep/0234_jingle_file_transfer.vala
index 25fe3ce4..951ea7b7 100644
--- a/xmpp-vala/src/module/xep/0234_jingle_file_transfer.vala
+++ b/xmpp-vala/src/module/xep/0234_jingle_file_transfer.vala
@@ -56,8 +56,13 @@ public class Module : Jingle.ContentType, XmppStreamModule {
.put_node(new StanzaNode.build("size", NS_URI).put_node(new StanzaNode.text(size.to_string()))));
// TODO(hrxi): Add the mandatory hash field
- Jingle.Session session = stream.get_module(Jingle.Module.IDENTITY)
- .create_session(stream, Jingle.TransportType.STREAMING, receiver_full_jid, Jingle.Senders.INITIATOR, "a-file-offer", description); // TODO(hrxi): Why "a-file-offer"?
+ Jingle.Session session;
+ try {
+ session = stream.get_module(Jingle.Module.IDENTITY)
+ .create_session(stream, Jingle.TransportType.STREAMING, receiver_full_jid, Jingle.Senders.INITIATOR, "a-file-offer", description); // TODO(hrxi): Why "a-file-offer"?
+ } catch (Jingle.Error e) {
+ throw new IOError.FAILED(@"couldn't create Jingle session: $(e.message)");
+ }
session.terminate_on_connection_close = false;
yield session.conn.input_stream.close_async();
diff --git a/xmpp-vala/src/util.vala b/xmpp-vala/src/util.vala
new file mode 100644
index 00000000..34a05b7a
--- /dev/null
+++ b/xmpp-vala/src/util.vala
@@ -0,0 +1,50 @@
+namespace Xmpp.Util {
+
+// Parse a number from a hexadecimal representation.
+//
+// Skips any whitespace at the start of the string, parses as many valid
+// characters as hexadecimal digits as possible (possibly zero) and returns
+// them as an integer value.
+//
+// ```
+// // 0x0
+// print("0x%lx\n", from_hex(""));
+//
+// // 0x123abc
+// print("0x%lx\n", from_hex("123abc"));
+//
+// // 0x0
+// print("0x%lx\n", from_hex("0x123abc"));
+//
+// // 0xa
+// print("0x%lx\n", from_hex("A quick brown fox jumps over the lazy dog."));
+//
+// // 0xfeed
+// print("0x%lx\n", from_hex(" FEED ME "));
+// ```
+
+public long from_hex(string numeral) {
+ long result = 0;
+ bool skipping_whitespace = true;
+ foreach (uint8 byte in numeral.data) {
+ char c = (char)byte;
+ if (skipping_whitespace && c.isspace()) {
+ continue;
+ }
+ skipping_whitespace = false;
+ int digit;
+ if ('0' <= c && c <= '9') {
+ digit = c - '0';
+ } else if ('A' <= c && c <= 'F') {
+ digit = c - 'A' + 10;
+ } else if ('a' <= c && c <= 'f') {
+ digit = c - 'a' + 10;
+ } else {
+ break;
+ }
+ result = (result << 4) | digit;
+ }
+ return result;
+}
+
+}