bullet proofing some code

iNPUTmice created

Change summary

src/eu/siacs/conversations/persistance/DatabaseBackend.java    |  3 
src/eu/siacs/conversations/services/XmppConnectionService.java | 28 ++-
2 files changed, 23 insertions(+), 8 deletions(-)

Detailed changes

src/eu/siacs/conversations/persistance/DatabaseBackend.java 🔗

@@ -210,6 +210,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
 		while (cursor.moveToNext()) {
 			list.add(Account.fromCursor(cursor));
 		}
+		cursor.close();
 		return list;
 	}
 
@@ -232,6 +233,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
 				+ Account.TABLENAME + " where not options & (1 <<1)", null);
 		cursor.moveToFirst();
 		int count = cursor.getInt(0);
+		cursor.close();
 		return (count > 0);
 	}
 
@@ -258,6 +260,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
 		while (cursor.moveToNext()) {
 			roster.initContact(Contact.fromCursor(cursor));
 		}
+		cursor.close();
 	}
 
 	public void writeRoster(Roster roster) {

src/eu/siacs/conversations/services/XmppConnectionService.java 🔗

@@ -908,10 +908,12 @@ public class XmppConnectionService extends Service {
 
 	public void archiveConversation(Conversation conversation) {
 		if (conversation.getMode() == Conversation.MODE_MULTI) {
-			Bookmark bookmark = conversation.getBookmark();
-			if (bookmark != null && bookmark.autojoin()) {
-				bookmark.setAutojoin(false);
-				pushBookmarks(bookmark.getAccount());
+			if (conversation.getAccount().getStatus() == Account.STATUS_ONLINE) {
+				Bookmark bookmark = conversation.getBookmark();
+				if (bookmark != null && bookmark.autojoin()) {
+					bookmark.setAutojoin(false);
+					pushBookmarks(bookmark.getAccount());
+				}
 			}
 			leaveMuc(conversation);
 		} else {
@@ -1639,7 +1641,8 @@ public class XmppConnectionService extends Service {
 		String id = conversation.getLatestMarkableMessageId();
 		conversation.markRead();
 		if (confirmMessages() && id != null && calledByUi) {
-			Log.d(Config.LOGTAG,conversation.getAccount().getJid()+": sending read marker for "+conversation.getName());
+			Log.d(Config.LOGTAG, conversation.getAccount().getJid()
+					+ ": sending read marker for " + conversation.getName());
 			Account account = conversation.getAccount();
 			String to = conversation.getContactJid();
 			this.sendMessagePacket(conversation.getAccount(),
@@ -1722,16 +1725,25 @@ public class XmppConnectionService extends Service {
 	}
 
 	public void sendMessagePacket(Account account, MessagePacket packet) {
-		account.getXmppConnection().sendMessagePacket(packet);
+		XmppConnection connection = account.getXmppConnection();
+		if (connection != null) {
+			connection.sendMessagePacket(packet);
+		}
 	}
 
 	public void sendPresencePacket(Account account, PresencePacket packet) {
-		account.getXmppConnection().sendPresencePacket(packet);
+		XmppConnection connection = account.getXmppConnection();
+		if (connection != null) {
+			connection.sendPresencePacket(packet);
+		}
 	}
 
 	public void sendIqPacket(Account account, IqPacket packet,
 			OnIqPacketReceived callback) {
-		account.getXmppConnection().sendIqPacket(packet, callback);
+		XmppConnection connection = account.getXmppConnection();
+		if (connection != null) {
+			connection.sendIqPacket(packet, callback);
+		}
 	}
 
 	public MessageGenerator getMessageGenerator() {