Support for SIP (Work in Progress)

Fix message timestamps to not point to dates further than one day in the
cusax-fix
Emil Ivov 20 years ago
parent 57046d4b1f
commit 36986c6b19

@ -76,7 +76,18 @@ public class OperationSetBasicInstantMessagingIcqImpl
* joscar and joustsim handle only channel one and two.
* This is patch to handle and fourth one.
*/
private ChannelFourCmdFactory channelFourCmdFactory = new ChannelFourCmdFactory();
private ChannelFourCmdFactory channelFourCmdFactory
= new ChannelFourCmdFactory();
/**
* I do not why but we sometimes receive messages with a date in the future.
* I've decided to ignore such messages. I draw the line on
* currentTimeMillis() + ONE_DAY milliseconds. Anything with a date farther
* in the future is considered bogus and its date is replaced with current
* time millis.
*/
private static final long ONE_DAY = 86400001;
/**
* Creates an instance of this operation set.
@ -105,7 +116,8 @@ public void addMessageListener(MessageListener listener)
{
synchronized(messageListeners)
{
this.messageListeners.add(listener);
if(!messageListeners.contains(listener))
this.messageListeners.add(listener);
}
}
@ -230,9 +242,9 @@ public OfflineMessagesRetriever(int requestID)
this.requestID = requestID;
}
public void handleResponse(SnacResponseEvent e)
public void handleResponse(SnacResponseEvent evt)
{
SnacCommand snac = e.getSnacCommand();
SnacCommand snac = evt.getSnacCommand();
logger.debug("Received a response to our offline message request: " +
snac);
@ -254,11 +266,21 @@ public void handleResponse(SnacResponseEvent e)
.createVolatileContact(contactUIN);
}
//some messages arrive far away in the future for some
//reason that I currently don't know. Until we find it
//(which may well be never) we are putting in an agly hack
//ignoring messages with a date beyond tomorrow.
long current = System.currentTimeMillis();
long msgDate = offlineMsgCmd.getDate().getTime();
if( (current + ONE_DAY) > msgDate )
msgDate = current;
MessageReceivedEvent msgReceivedEvt
= new MessageReceivedEvent(
createMessage(offlineMsgCmd.getContents()),
sourceContact,
offlineMsgCmd.getDate());
new Date(msgDate));
logger.debug("fire msg received for : " +
offlineMsgCmd.getContents());
fireMessageEvent(msgReceivedEvt);
@ -392,19 +414,21 @@ private void fireMessageEvent(EventObject evt)
{
for (int i = 0; i < messageListeners.size(); i++)
{
MessageListener l = (MessageListener)messageListeners.get(i);
MessageListener listener
= (MessageListener)messageListeners.get(i);
if (evt instanceof MessageDeliveredEvent )
{
l.messageDelivered((MessageDeliveredEvent)evt);
listener.messageDelivered((MessageDeliveredEvent)evt);
}
else if (evt instanceof MessageReceivedEvent)
{
l.messageReceived((MessageReceivedEvent) evt);
listener.messageReceived((MessageReceivedEvent) evt);
}
else if (evt instanceof MessageDeliveryFailedEvent)
{
l.messageDeliveryFailed((MessageDeliveryFailedEvent) evt);
listener.messageDeliveryFailed(
(MessageDeliveryFailedEvent) evt);
}
}
}
@ -484,9 +508,20 @@ public void gotMessage(Conversation conversation, MessageInfo minfo)
}
//some messages arrive far away in the future for some
//reason that I currently don't know. Until we find it
//(which may well be never) we are putting in an agly hack
//ignoring messages with a date beyond tomorrow.
long current = System.currentTimeMillis();
long msgDate = minfo.getTimestamp().getTime();
if ( (current + ONE_DAY) > msgDate)
msgDate = current;
MessageReceivedEvent msgReceivedEvt
= new MessageReceivedEvent(
newMessage, sourceContact , minfo.getTimestamp() );
newMessage, sourceContact , new Date(msgDate) );
fireMessageEvent(msgReceivedEvt);
}
@ -495,20 +530,20 @@ public void sentOtherEvent(Conversation conversation,
ConversationEventInfo event)
{}
public void canSendMessageChanged(Conversation c, boolean canSend)
public void canSendMessageChanged(Conversation conv, boolean canSend)
{}
public void conversationClosed(Conversation c)
public void conversationClosed(Conversation conv)
{}
public void conversationOpened(Conversation c)
public void conversationOpened(Conversation conv)
{}
public void gotOtherEvent(Conversation conversation,
ConversationEventInfo event)
{}
public void sentMessage(Conversation c, MessageInfo minfo)
public void sentMessage(Conversation conv, MessageInfo minfo)
{
/**@todo implement sentMessage() */
/**

Loading…
Cancel
Save