aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoriNPUTmice <daniel@gultsch.de>2014-06-26 16:42:24 +0200
committeriNPUTmice <daniel@gultsch.de>2014-06-26 16:42:24 +0200
commit3a57f6df897202010e1de242445b0f65763946d2 (patch)
treed39f982311baeee07b2216285b71e5b2c46999f3
parent3bb585c020f6b21e41de7ce6d8ee9cb0675a9b54 (diff)
faulty otr messages now generate an error
-rw-r--r--src/eu/siacs/conversations/generator/MessageGenerator.java18
-rw-r--r--src/eu/siacs/conversations/parser/MessageParser.java4
-rw-r--r--src/eu/siacs/conversations/services/XmppConnectionService.java8
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);
+ }
}
}