Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorslewis2008-09-12 21:31:08 +0000
committerslewis2008-09-12 21:31:08 +0000
commit6cf1df2ab249142715a7b8064d58d8702bd78692 (patch)
treec22d9e5ef4ea859be59e9a1228d995dda3934848
parent5706ee8740449a04eb8094949a43b6207328ace8 (diff)
downloadorg.eclipse.ecf-6cf1df2ab249142715a7b8064d58d8702bd78692.tar.gz
org.eclipse.ecf-6cf1df2ab249142715a7b8064d58d8702bd78692.tar.xz
org.eclipse.ecf-6cf1df2ab249142715a7b8064d58d8702bd78692.zip
Added 'Connection: close' request header for URLConnection-based retrieve and browse for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=247197 on Release_2_0 branch
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java26
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java5
2 files changed, 31 insertions, 0 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java
index 49d5a376e..406344b3e 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/browse/URLFileSystemBrowser.java
@@ -32,6 +32,14 @@ public class URLFileSystemBrowser extends AbstractFileSystemBrowser {
private static final String USERNAME_PREFIX = Messages.UrlConnectionRetrieveFileTransfer_USERNAME_PROMPT;
+ private static final String JRE_CONNECT_TIMEOUT_PROPERTY = "sun.net.client.defaultConnectTimeout"; //$NON-NLS-1$
+
+ private static final String DEFAULT_CONNECT_TIMEOUT = "30000"; //$NON-NLS-1$
+
+ private static final String JRE_READ_TIMEOUT_PROPERTY = "sun.net.client.defaultReadTimeout"; //$NON-NLS-1$
+
+ private static final String DEFAULT_READ_TIMEOUT = "30000"; //$NON-NLS-1$
+
URL directoryOrFile;
IConnectContext connectContext;
@@ -55,18 +63,36 @@ public class URLFileSystemBrowser extends AbstractFileSystemBrowser {
proxyHelper = new JREProxyHelper();
}
+ private void setupTimeouts() {
+ String existingTimeout = System.getProperty(JRE_CONNECT_TIMEOUT_PROPERTY);
+ if (existingTimeout == null) {
+ System.setProperty(JRE_CONNECT_TIMEOUT_PROPERTY, DEFAULT_CONNECT_TIMEOUT);
+ }
+ existingTimeout = System.getProperty(JRE_READ_TIMEOUT_PROPERTY);
+ if (existingTimeout == null) {
+ System.setProperty(JRE_READ_TIMEOUT_PROPERTY, DEFAULT_READ_TIMEOUT);
+ }
+ }
+
/* (non-Javadoc)
* @see org.eclipse.ecf.provider.filetransfer.browse.AbstractFileSystemBrowser#runRequest()
*/
protected void runRequest() throws Exception {
setupProxies();
setupAuthentication();
+ setupTimeouts();
URLConnection urlConnection = directoryOrFile.openConnection();
// set cache to off if using jar protocol
// this is for addressing bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=235933
if (directoryOrFile.getProtocol().equalsIgnoreCase("jar")) { //$NON-NLS-1$
urlConnection.setUseCaches(false);
}
+ // Add http 1.1 'Connection: close' header in order to potentially avoid
+ // server issue described here https://bugs.eclipse.org/bugs/show_bug.cgi?id=234916#c13
+ // See bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=247197
+ // also see http 1.1 rfc section 14-10 in http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
+ urlConnection.setRequestProperty("Connection", "close"); //$NON-NLS-1$ //$NON-NLS-2$
+
IURLConnectionModifier connectionModifier = Activator.getDefault().getURLConnectionModifier();
if (connectionModifier != null) {
connectionModifier.setSocketFactoryForConnection(urlConnection);
diff --git a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java
index 5f0dbdb06..0d25c2b53 100644
--- a/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.filetransfer/src/org/eclipse/ecf/provider/filetransfer/retrieve/UrlConnectionRetrieveFileTransfer.java
@@ -100,6 +100,11 @@ public class UrlConnectionRetrieveFileTransfer extends AbstractRetrieveFileTrans
throw new InvalidFileRangeSpecificationException(Messages.UrlConnectionRetrieveFileTransfer_RESUME_ERROR_END_POSITION_LESS_THAN_START, rangeSpec);
setRangeHeader("bytes=" + startPosition + "-" + ((endPosition == -1L) ? "" : ("" + endPosition))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
+ // Add http 1.1 'Connection: close' header in order to potentially avoid
+ // server issue described here https://bugs.eclipse.org/bugs/show_bug.cgi?id=234916#c13
+ // See bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=247197
+ // also see http 1.1 rfc section 14-10 in http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
+ urlConnection.setRequestProperty("Connection", "close"); //$NON-NLS-1$ //$NON-NLS-2$
}
private void setRangeHeader(String value) {

Back to the top