From 3189afaae9bf3770f5a8dc85a2da48e4e3d464e2 Mon Sep 17 00:00:00 2001 From: mguessan Date: Tue, 14 May 2013 21:01:43 +0000 Subject: [PATCH] Interrupt message load thread on client connection exception git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@2119 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/exchange/MessageLoadThread.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/java/davmail/exchange/MessageLoadThread.java b/src/java/davmail/exchange/MessageLoadThread.java index 9a629ab4..6c29718b 100644 --- a/src/java/davmail/exchange/MessageLoadThread.java +++ b/src/java/davmail/exchange/MessageLoadThread.java @@ -5,6 +5,7 @@ import org.apache.log4j.Logger; import javax.mail.MessagingException; import java.io.IOException; import java.io.OutputStream; +import java.net.SocketException; /** * Message load thread. @@ -56,8 +57,15 @@ public class MessageLoadThread extends Thread { while (!messageLoadThread.isComplete) { messageLoadThread.join(10000); LOGGER.debug("Still loading uid " + message.getUid() + " imapUid " + message.getImapUid()); - outputStream.write(' '); - outputStream.flush(); + try { + outputStream.write(' '); + outputStream.flush(); + } catch (SocketException e) { + // client closed connection, stop thread + message.dropMimeMessage(); + messageLoadThread.interrupt(); + throw e; + } } if (messageLoadThread.ioException != null) { throw messageLoadThread.ioException;