diff options
author | iNPUTmice <daniel@gultsch.de> | 2014-06-26 16:42:24 +0200 |
---|---|---|
committer | iNPUTmice <daniel@gultsch.de> | 2014-06-26 16:42:24 +0200 |
commit | 3a57f6df897202010e1de242445b0f65763946d2 (patch) | |
tree | d39f982311baeee07b2216285b71e5b2c46999f3 /src/eu/siacs/conversations | |
parent | 3bb585c020f6b21e41de7ce6d8ee9cb0675a9b54 (diff) |
faulty otr messages now generate an error
Diffstat (limited to '')
3 files changed, 25 insertions, 5 deletions
diff --git a/src/eu/siacs/conversations/generator/MessageGenerator.java b/src/eu/siacs/conversations/generator/MessageGenerator.java index b9728952..28504b21 100644 --- a/src/eu/siacs/conversations/generator/MessageGenerator.java +++ b/src/eu/siacs/conversations/generator/MessageGenerator.java @@ -88,4 +88,22 @@ public class MessageGenerator { } return packet; } + + public MessagePacket generateNotAcceptable(MessagePacket origin) { + MessagePacket packet = generateError(origin); + Element error = packet.addChild("error"); + error.setAttribute("type", "modify"); + error.setAttribute("code", "406"); + error.addChild("not-acceptable"); + return packet; + } + + private MessagePacket generateError(MessagePacket origin) { + MessagePacket packet = new MessagePacket(); + packet.setId(origin.getId()); + packet.setTo(origin.getFrom()); + packet.setBody(origin.getBody()); + packet.setType(MessagePacket.TYPE_ERROR); + return packet; + } } diff --git a/src/eu/siacs/conversations/parser/MessageParser.java b/src/eu/siacs/conversations/parser/MessageParser.java index cd10d6c8..598cf830 100644 --- a/src/eu/siacs/conversations/parser/MessageParser.java +++ b/src/eu/siacs/conversations/parser/MessageParser.java @@ -92,9 +92,9 @@ public class MessageParser extends AbstractParser { } catch (Exception e) { String receivedId = packet.getId(); if (receivedId!=null) { - mXmppConnectionService.replyWithError(account,packet); + mXmppConnectionService.replyWithNotAcceptable(account,packet); } - conversation.resetOtrSession(); + conversation.endOtrIfNeeded(); return null; } } diff --git a/src/eu/siacs/conversations/services/XmppConnectionService.java b/src/eu/siacs/conversations/services/XmppConnectionService.java index f4691fab..b7c32db2 100644 --- a/src/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/eu/siacs/conversations/services/XmppConnectionService.java @@ -1475,8 +1475,10 @@ public class XmppConnectionService extends Service { return this.pm; } - public void replyWithError(Account account, MessagePacket packet) { - // TODO Auto-generated method stub - + public void replyWithNotAcceptable(Account account, MessagePacket packet) { + if (account.getStatus() == Account.STATUS_ONLINE) { + MessagePacket error = this.mMessageGenerator.generateNotAcceptable(packet); + account.getXmppConnection().sendMessagePacket(error); + } } } |