From e6f8e4a3edde97a32ee4549182c34711f77fc2ba Mon Sep 17 00:00:00 2001 From: Ingo Bauersachs Date: Tue, 25 Nov 2014 17:20:42 +0100 Subject: [PATCH] Support type=error without the an error element This is against the specification, but allows us to receives messages from Openfire's misbehaving packet filter plugin. --- ...ionSetBasicInstantMessagingJabberImpl.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java index c8899811c..6d85a5b84 100644 --- a/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java +++ b/src/net/java/sip/communicator/impl/protocol/jabber/OperationSetBasicInstantMessagingJabberImpl.java @@ -929,22 +929,31 @@ public void processPacket(Packet packet) if (logger.isInfoEnabled()) logger.info("Message error received from " + userBareID); - int errorCode = packet.getError().getCode(); int errorResultCode = MessageDeliveryFailedEvent.UNKNOWN_ERROR; - - if(errorCode == 503) + if (packet.getError() != null) { - org.jivesoftware.smackx.packet.MessageEvent msgEvent = - (org.jivesoftware.smackx.packet.MessageEvent) - packet.getExtension("x", "jabber:x:event"); - if(msgEvent != null && msgEvent.isOffline()) + int errorCode = packet.getError().getCode(); + + if(errorCode == 503) { - errorResultCode = - MessageDeliveryFailedEvent - .OFFLINE_MESSAGES_NOT_SUPPORTED; + org.jivesoftware.smackx.packet.MessageEvent msgEvent = + (org.jivesoftware.smackx.packet.MessageEvent) + packet.getExtension("x", "jabber:x:event"); + if(msgEvent != null && msgEvent.isOffline()) + { + errorResultCode = + MessageDeliveryFailedEvent + .OFFLINE_MESSAGES_NOT_SUPPORTED; + } } } + if (sourceContact == null) + { + sourceContact = opSetPersPresence.createVolatileContact( + userFullId, isPrivateMessaging); + } + MessageDeliveryFailedEvent ev = new MessageDeliveryFailedEvent(newMessage, sourceContact,