Fixed sending after connectivity change

pull/50/head
M66B 7 years ago
parent 27f389969a
commit 76f49ee748

@ -70,7 +70,6 @@ import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.RejectedExecutionException;
import java.util.concurrent.Semaphore; import java.util.concurrent.Semaphore;
import javax.mail.Address; import javax.mail.Address;
@ -617,58 +616,54 @@ public class ServiceSynchronize extends LifecycleService {
final long fid = intent.getLongExtra("folder", -1); final long fid = intent.getLongExtra("folder", -1);
//Log.v(Helper.TAG, "run operations folder=" + fid); //Log.v(Helper.TAG, "run operations folder=" + fid);
try { executor.submit(new Runnable() {
executor.submit(new Runnable() { @Override
@Override public void run() {
public void run() { // Get folder
// Get folder EntityFolder folder = null;
EntityFolder folder = null; IMAPFolder ifolder = null;
IMAPFolder ifolder = null; for (EntityFolder f : folders.keySet())
for (EntityFolder f : folders.keySet()) if (f.id == fid) {
if (f.id == fid) { folder = f;
folder = f; ifolder = folders.get(f);
ifolder = folders.get(f); break;
break; }
}
final boolean shouldClose = (ifolder == null); final boolean shouldClose = (ifolder == null);
try { try {
if (folder == null) if (folder == null)
throw new IllegalArgumentException("Unknown folder=" + fid); throw new IllegalArgumentException("Unknown folder=" + fid);
if (shouldClose) if (shouldClose)
Log.v(Helper.TAG, folder.name + " start operations offline=" + shouldClose); Log.v(Helper.TAG, folder.name + " start operations offline=" + shouldClose);
if (ifolder == null) { if (ifolder == null) {
// Prevent unnecessary folder connections // Prevent unnecessary folder connections
if (db.operation().getOperationCount(fid) == 0) if (db.operation().getOperationCount(fid) == 0)
return; return;
ifolder = (IMAPFolder) istore.getFolder(folder.name); ifolder = (IMAPFolder) istore.getFolder(folder.name);
ifolder.open(Folder.READ_WRITE); ifolder.open(Folder.READ_WRITE);
} }
processOperations(folder, isession, istore, ifolder); processOperations(folder, isession, istore, ifolder);
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
reportError(account.name, folder.name, ex); reportError(account.name, folder.name, ex);
} finally { } finally {
if (shouldClose) if (shouldClose)
if (ifolder != null && ifolder.isOpen()) { if (ifolder != null && ifolder.isOpen()) {
try { try {
ifolder.close(false); ifolder.close(false);
} catch (MessagingException ex) { } catch (MessagingException ex) {
Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex)); Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
}
} }
//Log.v(Helper.TAG, folder.name + " stop operations"); }
} //Log.v(Helper.TAG, folder.name + " stop operations");
} }
}); }
} catch (RejectedExecutionException ex) { });
Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
}
} }
}; };
@ -1463,7 +1458,6 @@ public class ServiceSynchronize extends LifecycleService {
for (Thread t : threads) for (Thread t : threads)
join(t); join(t);
threads.clear(); threads.clear();
executor.shutdown();
// Stop monitoring outbox // Stop monitoring outbox
lbm.unregisterReceiver(outboxReceiver); lbm.unregisterReceiver(outboxReceiver);
@ -1504,24 +1498,20 @@ public class ServiceSynchronize extends LifecycleService {
Properties props = MessageHelper.getSessionProperties(); Properties props = MessageHelper.getSessionProperties();
final Session isession = Session.getInstance(props, null); final Session isession = Session.getInstance(props, null);
try { executor.submit(new Runnable() {
executor.submit(new Runnable() { @Override
@Override public void run() {
public void run() { try {
try { Log.v(Helper.TAG, outbox.name + " start operations");
Log.v(Helper.TAG, outbox.name + " start operations"); processOperations(outbox, isession, null, null);
processOperations(outbox, isession, null, null); } catch (Throwable ex) {
} catch (Throwable ex) { Log.e(Helper.TAG, outbox.name + " " + ex + "\n" + Log.getStackTraceString(ex));
Log.e(Helper.TAG, outbox.name + " " + ex + "\n" + Log.getStackTraceString(ex)); reportError(null, outbox.name, ex);
reportError(null, outbox.name, ex); } finally {
} finally { Log.v(Helper.TAG, outbox.name + " end operations");
Log.v(Helper.TAG, outbox.name + " end operations");
}
} }
}); }
} catch (RejectedExecutionException ex) { });
Log.w(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
}
} }
}; };
} }

Loading…
Cancel
Save