Fix compilation with older valac versions

This commit is contained in:
fiaxh 2019-07-18 03:12:05 +02:00
parent f0abb8aaf9
commit 1853ee8b4f
3 changed files with 39 additions and 34 deletions

View file

@ -82,7 +82,10 @@ public class JingleFileSender : FileSender, Object {
XmppStream? stream = stream_interactor.get_stream(conversation.account);
if (stream == null) return false;
foreach (Jid full_jid in stream.get_flag(Presence.Flag.IDENTITY).get_resources(conversation.counterpart)) {
Gee.List<Jid>? resources = stream.get_flag(Presence.Flag.IDENTITY).get_resources(conversation.counterpart);
if (resources == null) return false;
foreach (Jid full_jid in resources) {
if (stream.get_module(Xep.JingleFileTransfer.Module.IDENTITY).is_available(stream, full_jid)) {
return true;
}
@ -91,6 +94,8 @@ public class JingleFileSender : FileSender, Object {
}
public bool can_send(Conversation conversation, FileTransfer file_transfer) {
if (conversation.encryption != Encryption.NONE) return false;
XmppStream? stream = stream_interactor.get_stream(file_transfer.account);
if (stream == null) return false;

View file

@ -37,7 +37,7 @@ public class Module : XmppStreamModule, Iq.Handler {
stream.get_module(Iq.Module.IDENTITY).send_iq(stream, new Iq.Stanza.error(iq, new ErrorStanza.not_acceptable("unexpected IBB connection")));
return;
}
if (conn.state != WAITING_FOR_CONNECT) {
if (conn.state != Connection.State.WAITING_FOR_CONNECT) {
stream.get_module(Iq.Module.IDENTITY).send_iq(stream, new Iq.Stanza.error(iq, new ErrorStanza.bad_request("IBB open for already open connection")));
return;
}
@ -212,7 +212,7 @@ public class Connection : IOStream {
}
return read;
}
if (state == DISCONNECTED) {
if (state == Connection.State.DISCONNECTED) {
return 0;
}
set_read_callback(read_async.callback, cancellable, io_priority);
@ -221,7 +221,7 @@ public class Connection : IOStream {
}
public async ssize_t write_async(uint8[]? buffer, int io_priority = GLib.Priority.DEFAULT, Cancellable? cancellable = null) throws IOError {
while (state == WAITING_FOR_CONNECT || state == CONNECTING) {
while (state == State.WAITING_FOR_CONNECT || state == State.CONNECTING) {
if (cancellable != null) {
cancellable.set_error_if_cancelled();
}
@ -229,7 +229,7 @@ public class Connection : IOStream {
yield;
}
throw_if_closed();
assert(state == CONNECTED);
assert(state == State.CONNECTED);
// TODO(hrxi): merging?
int seq = local_seq;
local_seq = (local_seq + 1) % SEQ_MODULUS;
@ -293,28 +293,28 @@ public class Connection : IOStream {
}
delegate void OnClose(bool success);
private bool close_impl(Cancellable? cancellable = null, OnClose? on_close = null) {
if (state == DISCONNECTING || state == DISCONNECTED || state == ERROR) {
if (state == State.DISCONNECTING || state == State.DISCONNECTED || state == State.ERROR) {
on_close(true);
return true;
}
if (state == WAITING_FOR_CONNECT) {
state = DISCONNECTED;
if (state == State.WAITING_FOR_CONNECT) {
state = State.DISCONNECTED;
stream.get_flag(Flag.IDENTITY).remove_connection(this);
trigger_read_callback();
on_close(true);
return true;
}
state = DISCONNECTING;
state = State.DISCONNECTING;
StanzaNode close = new StanzaNode.build("close", NS_URI)
.add_self_xmlns()
.put_attribute("sid", sid);
Iq.Stanza iq = new Iq.Stanza.set(close) { to=receiver_full_jid };
stream.get_module(Iq.Module.IDENTITY).send_iq(stream, iq, (stream, iq) => {
assert(state == DISCONNECTING);
assert(state == State.DISCONNECTING);
if (iq.is_error()) {
set_error("disconnecting failed");
} else {
state = DISCONNECTED;
state = State.DISCONNECTED;
}
stream.get_flag(Flag.IDENTITY).remove_connection(this);
trigger_read_callback();
@ -340,12 +340,12 @@ public class Connection : IOStream {
Iq.Stanza iq = new Iq.Stanza.set(open) { to=receiver_full_jid };
stream.get_module(Iq.Module.IDENTITY).send_iq(stream, iq, (stream, iq) => {
if (conn.state != CONNECTING) {
assert(conn.state != CONNECTED);
if (conn.state != State.CONNECTING) {
assert(conn.state != State.CONNECTED);
return;
}
if (!iq.is_error()) {
conn.state = CONNECTED;
conn.state = State.CONNECTED;
stream.get_flag(Flag.IDENTITY).add_connection(conn);
conn.trigger_write_callback();
} else {
@ -359,29 +359,29 @@ public class Connection : IOStream {
}
void throw_if_error() throws IOError {
if (state == ERROR) {
if (state == State.ERROR) {
throw new IOError.FAILED(error);
}
}
void throw_if_closed() throws IOError {
throw_if_error();
if (state == DISCONNECTING || state == DISCONNECTED) {
if (state == State.DISCONNECTING || state == State.DISCONNECTED) {
throw new IOError.CLOSED("can't read/write on a closed connection");
}
}
void set_error(string error) {
if (state != WAITING_FOR_CONNECT && state != DISCONNECTING && state != DISCONNECTED && state != ERROR) {
if (state != State.WAITING_FOR_CONNECT && state != State.DISCONNECTING && state != State.DISCONNECTED && state != State.ERROR) {
close_async.begin();
}
state = ERROR;
state = State.ERROR;
this.error = error;
stream.get_flag(Flag.IDENTITY).remove_connection(this);
}
public void handle_open(XmppStream stream, StanzaNode open, Iq.Stanza iq) {
assert(state == WAITING_FOR_CONNECT);
assert(state == State.WAITING_FOR_CONNECT);
int block_size = open.get_attribute_int("block-size");
string? stanza = open.get_attribute("stanza");
if (block_size < 0 || (stanza != null && stanza != "iq" && stanza != "message")) {
@ -400,12 +400,12 @@ public class Connection : IOStream {
return;
}
this.block_size = block_size;
state = CONNECTED;
state = State.CONNECTED;
stream.get_module(Iq.Module.IDENTITY).send_iq(stream, new Iq.Stanza.result(iq));
trigger_write_callback();
}
public void handle_data(XmppStream stream, StanzaNode data, Iq.Stanza iq) {
assert(state == CONNECTED);
assert(state == State.CONNECTED);
if (input_closed) {
set_error("unexpected data");
stream.get_module(Iq.Module.IDENTITY).send_iq(stream, new Iq.Stanza.error(iq, new ErrorStanza.not_allowed("unexpected data")));
@ -434,12 +434,12 @@ public class Connection : IOStream {
}
}
public void handle_close(XmppStream stream, StanzaNode close, Iq.Stanza iq) {
assert(state == CONNECTED);
assert(state == State.CONNECTED);
stream.get_module(Iq.Module.IDENTITY).send_iq(stream, new Iq.Stanza.result(iq));
stream.get_flag(Flag.IDENTITY).remove_connection(this);
input_closed = true;
output_closed = true;
state = DISCONNECTED;
state = State.DISCONNECTED;
trigger_read_callback();
}

View file

@ -317,7 +317,7 @@ public class Session {
public signal void accepted(XmppStream stream);
public Session.initiate_sent(string sid, Type type, TransportParameters transport, Jid peer_full_jid, string content_name) {
this.state = INITIATE_SENT;
this.state = State.INITIATE_SENT;
this.sid = sid;
this.type_ = type;
this.peer_full_jid = peer_full_jid;
@ -327,7 +327,7 @@ public class Session {
}
public Session.initiate_received(string sid, Type type, TransportParameters? transport, Jid peer_full_jid, string content_name) {
this.state = INITIATE_RECEIVED;
this.state = State.INITIATE_RECEIVED;
this.sid = sid;
this.type_ = type;
this.peer_full_jid = peer_full_jid;
@ -339,7 +339,7 @@ public class Session {
public void handle_iq_set(XmppStream stream, string action, StanzaNode jingle, Iq.Stanza iq) throws IqError {
switch (action) {
case "session-accept":
if (state != INITIATE_SENT) {
if (state != State.INITIATE_SENT) {
throw new IqError.OUT_OF_ORDER("got session-accept while not waiting for one");
}
handle_session_accept(stream, jingle, iq);
@ -392,7 +392,7 @@ public class Session {
conn = transport.create_transport_connection(stream, peer_full_jid, Role.INITIATOR);
transport = null;
stream.get_module(Iq.Module.IDENTITY).send_iq(stream, new Iq.Stanza.result(iq));
state = ACTIVE;
state = State.ACTIVE;
accepted(stream);
}
void handle_session_terminate(XmppStream stream, StanzaNode jingle, Iq.Stanza iq) throws IqError {
@ -401,7 +401,7 @@ public class Session {
}
public void accept(XmppStream stream, StanzaNode description) {
if (state != INITIATE_RECEIVED) {
if (state != State.INITIATE_RECEIVED) {
return; // TODO(hrxi): what to do?
}
StanzaNode jingle = new StanzaNode.build("jingle", NS_URI)
@ -420,11 +420,11 @@ public class Session {
conn = transport.create_transport_connection(stream, peer_full_jid, Role.RESPONDER);
transport = null;
state = ACTIVE;
state = State.ACTIVE;
}
public void reject(XmppStream stream) {
if (state != INITIATE_RECEIVED) {
if (state != State.INITIATE_RECEIVED) {
return; // TODO(hrxi): what to do?
}
StanzaNode reason = new StanzaNode.build("reason", NS_URI)
@ -442,18 +442,18 @@ public class Session {
}
public void close_connection(XmppStream stream) {
if (state != ACTIVE) {
if (state != State.ACTIVE) {
return; // TODO(hrxi): what to do?
}
conn.close();
}
public void terminate(XmppStream stream, StanzaNode reason) {
if (state != INITIATE_SENT && state != INITIATE_RECEIVED && state != ACTIVE) {
if (state != State.INITIATE_SENT && state != State.INITIATE_RECEIVED && state != State.ACTIVE) {
// TODO(hrxi): what to do?
return;
}
if (state == ACTIVE) {
if (state == State.ACTIVE) {
conn.close();
}
@ -465,7 +465,7 @@ public class Session {
Iq.Stanza iq = new Iq.Stanza.set(jingle) { to=peer_full_jid };
stream.get_module(Iq.Module.IDENTITY).send_iq(stream, iq);
state = ENDED;
state = State.ENDED;
// Immediately remove the session from the open sessions as per the
// XEP, don't wait for confirmation.
stream.get_flag(Flag.IDENTITY).remove_session(sid);