properly clean up timed out mam queries
This commit is contained in:
		
							parent
							
								
									ede92235d7
								
							
						
					
					
						commit
						2262921ff4
					
				| @ -425,7 +425,7 @@ public class MessageParser extends AbstractParser implements | ||||
| 					mXmppConnectionService.sendMessagePacket(account, receipt); | ||||
| 				} | ||||
| 			} | ||||
| 			if (account.getXmppConnection() != null && account.getXmppConnection().getFeatures().advancedStreamFeaturesLoaded()) { | ||||
| 			if (account.isOnlineAndConnected() && query == null) { | ||||
| 				if (conversation.setLastMessageTransmitted(System.currentTimeMillis())) { | ||||
| 					mXmppConnectionService.updateConversation(conversation); | ||||
| 				} | ||||
|  | ||||
| @ -35,7 +35,15 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { | ||||
| 		this.mXmppConnectionService = service; | ||||
| 	} | ||||
| 
 | ||||
| 	public void catchup(final Account account) { | ||||
| 	private void catchup(final Account account) { | ||||
| 		synchronized (this.queries) { | ||||
| 			for(Iterator<Query> iterator = this.queries.iterator(); iterator.hasNext();) { | ||||
| 				Query query = iterator.next(); | ||||
| 				if (query.getAccount() == account) { | ||||
| 					iterator.remove(); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		long startCatchup = getLastMessageTransmitted(account); | ||||
| 		long endCatchup = account.getXmppConnection().getLastSessionEstablished(); | ||||
| 		if (startCatchup == 0) { | ||||
| @ -131,7 +139,14 @@ public class MessageArchiveService implements OnAdvancedStreamFeaturesLoaded { | ||||
| 			this.mXmppConnectionService.sendIqPacket(account, packet, new OnIqPacketReceived() { | ||||
| 				@Override | ||||
| 				public void onIqPacketReceived(Account account, IqPacket packet) { | ||||
| 					if (packet.getType() != IqPacket.TYPE.RESULT) { | ||||
| 					if (packet.getType() == IqPacket.TYPE.TIMEOUT) { | ||||
| 						synchronized (MessageArchiveService.this.queries) { | ||||
| 							MessageArchiveService.this.queries.remove(query); | ||||
| 							if (query.hasCallback()) { | ||||
| 								query.callback(); | ||||
| 							} | ||||
| 						} | ||||
| 					} else if (packet.getType() != IqPacket.TYPE.RESULT) { | ||||
| 						Log.d(Config.LOGTAG, account.getJid().toBareJid().toString() + ": error executing mam: " + packet.toString()); | ||||
| 						finalizeQuery(query); | ||||
| 					} | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Daniel Gultsch
						Daniel Gultsch