diff options
-rw-r--r-- | src/eu/siacs/conversations/xml/TagWriter.java | 4 | ||||
-rw-r--r-- | src/eu/siacs/conversations/xmpp/XmppConnection.java | 13 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/eu/siacs/conversations/xml/TagWriter.java b/src/eu/siacs/conversations/xml/TagWriter.java index c8294aed..f06664fd 100644 --- a/src/eu/siacs/conversations/xml/TagWriter.java +++ b/src/eu/siacs/conversations/xml/TagWriter.java @@ -75,4 +75,8 @@ public class TagWriter { public boolean finished() { return (this.writeQueue.size() == 0); } + + public boolean isActive() { + return outputStream != null; + } } diff --git a/src/eu/siacs/conversations/xmpp/XmppConnection.java b/src/eu/siacs/conversations/xmpp/XmppConnection.java index e50ccd05..582bf9bd 100644 --- a/src/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/eu/siacs/conversations/xmpp/XmppConnection.java @@ -678,6 +678,7 @@ public class XmppConnection implements Runnable { public void sendIqPacket(IqPacket packet, OnIqPacketReceived callback) { String id = nextRandomId(); packet.setAttribute("id", id); + packet.setFrom(account.getFullJid()); this.sendPacket(packet, callback); } @@ -761,12 +762,14 @@ public class XmppConnection implements Runnable { socket.close(); return; } - tagWriter.finish(); - while(!tagWriter.finished()) { - //Log.d(LOGTAG,"not yet finished"); - Thread.sleep(100); + if (tagWriter.isActive()) { + tagWriter.finish(); + while(!tagWriter.finished()) { + //Log.d(LOGTAG,"not yet finished"); + Thread.sleep(100); + } + tagWriter.writeTag(Tag.end("stream:stream")); } - tagWriter.writeTag(Tag.end("stream:stream")); } catch (IOException e) { Log.d(LOGTAG,"io exception during disconnect"); } catch (InterruptedException e) { |