diff --git a/src/etc/davmail.properties b/src/etc/davmail.properties index 7c03c3cf..ff360a92 100644 --- a/src/etc/davmail.properties +++ b/src/etc/davmail.properties @@ -57,6 +57,9 @@ davmail.ssl.nosecuresmtp=false # disable update check davmail.disableUpdateCheck=true +# Send keepalive character during large folder and messages download +davmail.enableKeepalive=false + ############################################################# # Caldav settings diff --git a/src/java/davmail/Settings.java b/src/java/davmail/Settings.java index 14bc84ab..9bdab43c 100644 --- a/src/java/davmail/Settings.java +++ b/src/java/davmail/Settings.java @@ -138,6 +138,7 @@ public final class Settings { SETTINGS.put("davmail.sentKeepDelay", "90"); SETTINGS.put("davmail.caldavPastDelay", "90"); SETTINGS.put("davmail.imapIdleDelay", ""); + SETTINGS.put("davmail.enableKeepAlive", Boolean.FALSE.toString()); SETTINGS.put("davmail.allowRemote", Boolean.FALSE.toString()); SETTINGS.put("davmail.bindAddress", ""); SETTINGS.put("davmail.useSystemProxies", Boolean.FALSE.toString()); diff --git a/src/java/davmail/exchange/FolderLoadThread.java b/src/java/davmail/exchange/FolderLoadThread.java index c154a426..8cf57e07 100644 --- a/src/java/davmail/exchange/FolderLoadThread.java +++ b/src/java/davmail/exchange/FolderLoadThread.java @@ -66,7 +66,7 @@ public class FolderLoadThread extends Thread { while (!folderLoadThread.isComplete) { folderLoadThread.join(20000); LOGGER.debug("Still loading " + folder.folderPath + " (" + folder.count() + " messages)"); - if (Settings.getBooleanProperty("davmail.imapEnableKeepalive", false)) { + if (Settings.getBooleanProperty("davmail.enableKeepAlive", false)) { try { outputStream.write(' '); outputStream.flush(); diff --git a/src/java/davmail/exchange/MessageLoadThread.java b/src/java/davmail/exchange/MessageLoadThread.java index 22fd37ff..366451fa 100644 --- a/src/java/davmail/exchange/MessageLoadThread.java +++ b/src/java/davmail/exchange/MessageLoadThread.java @@ -58,7 +58,7 @@ public class MessageLoadThread extends Thread { while (!messageLoadThread.isComplete) { messageLoadThread.join(10000); LOGGER.debug("Still loading uid " + message.getUid() + " imapUid " + message.getImapUid()); - if (Settings.getBooleanProperty("davmail.imapEnableKeepalive", false)) { + if (Settings.getBooleanProperty("davmail.enableKeepAlive", false)) { try { outputStream.write(' '); outputStream.flush(); diff --git a/src/java/davmail/ui/SettingsFrame.java b/src/java/davmail/ui/SettingsFrame.java index 63a01e33..b231556f 100644 --- a/src/java/davmail/ui/SettingsFrame.java +++ b/src/java/davmail/ui/SettingsFrame.java @@ -61,49 +61,50 @@ public class SettingsFrame extends JFrame { protected JTextField caldavPastDelayField; protected JTextField imapIdleDelayField; - JCheckBox useSystemProxiesField; - JCheckBox enableProxyField; - JTextField httpProxyField; - JTextField httpProxyPortField; - JTextField httpProxyUserField; - JTextField httpProxyPasswordField; - JTextField noProxyForField; + protected JCheckBox useSystemProxiesField; + protected JCheckBox enableProxyField; + protected JTextField httpProxyField; + protected JTextField httpProxyPortField; + protected JTextField httpProxyUserField; + protected JTextField httpProxyPasswordField; + protected JTextField noProxyForField; - JCheckBox allowRemoteField; - JTextField bindAddressField; - JTextField clientSoTimeoutField; - JTextField certHashField; - JCheckBox disableUpdateCheck; + protected JCheckBox allowRemoteField; + protected JTextField bindAddressField; + protected JTextField clientSoTimeoutField; + protected JTextField certHashField; + protected JCheckBox disableUpdateCheck; - JComboBox keystoreTypeCombo; - JTextField keystoreFileField; - JPasswordField keystorePassField; - JPasswordField keyPassField; + protected JComboBox keystoreTypeCombo; + protected JTextField keystoreFileField; + protected JPasswordField keystorePassField; + protected JPasswordField keyPassField; - JComboBox clientKeystoreTypeCombo; - JTextField clientKeystoreFileField; - JPasswordField clientKeystorePassField; - JTextField pkcs11LibraryField; - JTextArea pkcs11ConfigField; + protected JComboBox clientKeystoreTypeCombo; + protected JTextField clientKeystoreFileField; + protected JPasswordField clientKeystorePassField; + protected JTextField pkcs11LibraryField; + protected JTextArea pkcs11ConfigField; - JComboBox rootLoggingLevelField; - JComboBox davmailLoggingLevelField; - JComboBox httpclientLoggingLevelField; - JComboBox wireLoggingLevelField; - JTextField logFilePathField; - JTextField logFileSizeField; + protected JComboBox rootLoggingLevelField; + protected JComboBox davmailLoggingLevelField; + protected JComboBox httpclientLoggingLevelField; + protected JComboBox wireLoggingLevelField; + protected JTextField logFilePathField; + protected JTextField logFileSizeField; - JCheckBox caldavEditNotificationsField; - JTextField caldavAlarmSoundField; - JCheckBox forceActiveSyncUpdateCheckBox; - JTextField defaultDomainField; - JCheckBox showStartupBannerCheckBox; - JCheckBox disableGuiNotificationsCheckBox; - JCheckBox imapAutoExpungeCheckBox; - JCheckBox popMarkReadOnRetrCheckBox; - JComboBox enableEwsComboBox; - JCheckBox enableKerberosCheckBox; - JCheckBox smtpSaveInSentCheckBox; + protected JCheckBox caldavEditNotificationsField; + protected JTextField caldavAlarmSoundField; + protected JCheckBox forceActiveSyncUpdateCheckBox; + protected JTextField defaultDomainField; + protected JCheckBox showStartupBannerCheckBox; + protected JCheckBox disableGuiNotificationsCheckBox; + protected JCheckBox imapAutoExpungeCheckBox; + protected JCheckBox enableKeepAliveCheckBox; + protected JCheckBox popMarkReadOnRetrCheckBox; + protected JComboBox enableEwsComboBox; + protected JCheckBox enableKerberosCheckBox; + protected JCheckBox smtpSaveInSentCheckBox; JCheckBox osxHideFromDockCheckBox; @@ -425,7 +426,7 @@ public class SettingsFrame extends JFrame { } protected JPanel getOtherSettingsPanel() { - JPanel otherSettingsPanel = new JPanel(new GridLayout(11, 2)); + JPanel otherSettingsPanel = new JPanel(new GridLayout(12, 2)); otherSettingsPanel.setBorder(BorderFactory.createTitledBorder(BundleMessage.format("UI_OTHER"))); enableKerberosCheckBox = new JCheckBox(); @@ -442,6 +443,8 @@ public class SettingsFrame extends JFrame { disableGuiNotificationsCheckBox.setSelected(Settings.getBooleanProperty("davmail.disableGuiNotifications", false)); imapAutoExpungeCheckBox = new JCheckBox(); imapAutoExpungeCheckBox.setSelected(Settings.getBooleanProperty("davmail.imapAutoExpunge", true)); + enableKeepAliveCheckBox = new JCheckBox(); + enableKeepAliveCheckBox.setSelected(Settings.getBooleanProperty("davmail.enableKeepAlive", false)); popMarkReadOnRetrCheckBox = new JCheckBox(); popMarkReadOnRetrCheckBox.setSelected(Settings.getBooleanProperty("davmail.popMarkReadOnRetr", false)); smtpSaveInSentCheckBox = new JCheckBox(); @@ -465,6 +468,8 @@ public class SettingsFrame extends JFrame { BundleMessage.format("UI_DISABLE_GUI_NOTIFICATIONS_HELP")); addSettingComponent(otherSettingsPanel, BundleMessage.format("UI_IMAP_AUTO_EXPUNGE"), imapAutoExpungeCheckBox, BundleMessage.format("UI_IMAP_AUTO_EXPUNGE_HELP")); + addSettingComponent(otherSettingsPanel, BundleMessage.format("UI_ENABLE_KEEPALIVE"), enableKeepAliveCheckBox, + BundleMessage.format("UI_ENABLE_KEEPALIVE_HELP")); addSettingComponent(otherSettingsPanel, BundleMessage.format("UI_POP_MARK_READ"), popMarkReadOnRetrCheckBox, BundleMessage.format("UI_POP_MARK_READ_HELP")); addSettingComponent(otherSettingsPanel, BundleMessage.format("UI_SAVE_IN_SENT"), smtpSaveInSentCheckBox, @@ -600,6 +605,7 @@ public class SettingsFrame extends JFrame { showStartupBannerCheckBox.setSelected(Settings.getBooleanProperty("davmail.showStartupBanner", true)); disableGuiNotificationsCheckBox.setSelected(Settings.getBooleanProperty("davmail.disableGuiNotifications", false)); imapAutoExpungeCheckBox.setSelected(Settings.getBooleanProperty("davmail.imapAutoExpunge", true)); + enableKeepAliveCheckBox.setSelected(Settings.getBooleanProperty("davmail.enableKeepAlive", false)); popMarkReadOnRetrCheckBox.setSelected(Settings.getBooleanProperty("davmail.popMarkReadOnRetrCheckBox", false)); setEwsModeSelectedItem(Settings.getProperty("davmail.enableEws", "auto")); smtpSaveInSentCheckBox.setSelected(Settings.getBooleanProperty("davmail.smtpSaveInSent", true)); @@ -761,6 +767,7 @@ public class SettingsFrame extends JFrame { Settings.setProperty("davmail.showStartupBanner", String.valueOf(showStartupBannerCheckBox.isSelected())); Settings.setProperty("davmail.disableGuiNotifications", String.valueOf(disableGuiNotificationsCheckBox.isSelected())); Settings.setProperty("davmail.imapAutoExpunge", String.valueOf(imapAutoExpungeCheckBox.isSelected())); + Settings.setProperty("davmail.enableKeepAlive", String.valueOf(enableKeepAliveCheckBox.isSelected())); Settings.setProperty("davmail.popMarkReadOnRetr", String.valueOf(popMarkReadOnRetrCheckBox.isSelected())); String selectedEwsMode = (String) enableEwsComboBox.getSelectedItem(); String enableEws; diff --git a/src/java/davmailmessages.properties b/src/java/davmailmessages.properties index 08204aae..e85a13ac 100644 --- a/src/java/davmailmessages.properties +++ b/src/java/davmailmessages.properties @@ -268,6 +268,8 @@ UI_DISABLE_GUI_NOTIFICATIONS=Disable balloon notifications UI_DISABLE_GUI_NOTIFICATIONS_HELP=Disable all graphical notifications UI_IMAP_AUTO_EXPUNGE=IMAP auto expunge: UI_IMAP_AUTO_EXPUNGE_HELP=Delete messages immediately on the server over IMAP +UI_ENABLE_KEEPALIVE=Enable KeepAlive: +UI_ENABLE_KEEPALIVE_HELP=Send KeepAlive character during large folder and messages download UI_POP_MARK_READ=POP mark read: UI_POP_MARK_READ_HELP=Mark messages read on server immediately after retrieval UI_IMAP_IDLE_DELAY=IDLE folder monitor delay (IMAP): diff --git a/src/java/davmailmessages_fr.properties b/src/java/davmailmessages_fr.properties index e35d3827..fa6cf30b 100644 --- a/src/java/davmailmessages_fr.properties +++ b/src/java/davmailmessages_fr.properties @@ -272,6 +272,8 @@ UI_IMAP_IDLE_DELAY=D UI_IMAP_IDLE_DELAY_HELP=Délai de surveillance du dossier IMAP en minutes, laisser vide pour désactiver le support IDLE UI_IMAP_AUTO_EXPUNGE=IMAP suppression immédiate : UI_IMAP_AUTO_EXPUNGE_HELP=Supprimer immédiatement les messages du serveur via IMAP +UI_ENABLE_KEEPALIVE=Activer KeepAlive : +UI_ENABLE_KEEPALIVE_HELP=Envoyer caractère KeepAlive pendant le chargement des dossiers et messages de taille importante UI_POP_MARK_READ=POP marquer lu : UI_POP_MARK_READ_HELP=Marquer les messages lus sur le serveur immédiatement après chargement EXCEPTION_EWS_NOT_AVAILABLE=Point d''accès EWS non disponible diff --git a/src/site/xdoc/advanced.xml b/src/site/xdoc/advanced.xml index 38daef94..d08115f0 100644 --- a/src/site/xdoc/advanced.xml +++ b/src/site/xdoc/advanced.xml @@ -78,6 +78,11 @@ Client connection timeout in seconds, 0 to disable timeout, empty for 5 minutes 300 + + Enable KeepAlive + Send KeepAlive character during large folder and messages download + false + diff --git a/src/site/xdoc/serversetup.xml b/src/site/xdoc/serversetup.xml index ab91e0ab..4b3d616f 100644 --- a/src/site/xdoc/serversetup.xml +++ b/src/site/xdoc/serversetup.xml @@ -87,6 +87,9 @@ davmail.ssl.nosecuresmtp=false # disable update check davmail.disableUpdateCheck=true +# Send keepalive character during large folder and messages download +davmail.enableKeepalive=false + ############################################################# # Caldav settings