*** empty log message ***
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/UpdateManagerUtils.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/UpdateManagerUtils.java
index 39b931e..29bc061 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/UpdateManagerUtils.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/UpdateManagerUtils.java
@@ -52,6 +52,7 @@
 import org.eclipse.update.core.Utilities;
 import org.eclipse.update.core.model.InstallAbortedException;
 import org.eclipse.update.internal.core.connection.ConnectionFactory;
+import org.eclipse.update.internal.core.connection.HttpResponse;
 import org.eclipse.update.internal.core.connection.IResponse;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.Constants;
@@ -558,6 +559,7 @@
 
 		if (result != IStatusCodes.HTTP_OK) { 
 			String serverMsg = response.getStatusMessage();
+			response.close();
 			throw new FatalIOException(NLS.bind(Messages.ContentReference_HttpNok, (new Object[] { new Integer(result), serverMsg, url })));						
 		}
 	}
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/FileResponse.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/FileResponse.java
index eba7e3e..62887cc 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/FileResponse.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/FileResponse.java
@@ -40,6 +40,10 @@
 	public int getStatusCode() {
 		return IStatusCodes.HTTP_OK;
 	}
+	
+	public void close() {
+		// nothing to close
+	}
 
 	public String getStatusMessage() {
 		return ""; //$NON-NLS-1$
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/HttpResponse.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/HttpResponse.java
index 6b6ae27..4199e1d 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/HttpResponse.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/HttpResponse.java
@@ -133,6 +133,17 @@
 		}
 		return in;
 	}
+	
+	public void close() {
+        if( null != in ) {
+                try {
+					in.close();
+				} catch (IOException e) {
+				}
+                in = null;
+        }
+	}
+	
 	/**
 	 * @see IResponse#getInputStream(IProgressMonitor)
 	 */
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/IResponse.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/IResponse.java
index e35efff..794b940 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/IResponse.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/IResponse.java
@@ -68,4 +68,9 @@
 	 * @return
 	 */
 	public long getLastModified();
+	
+	/**
+	 * Close the connection if open.
+	 */
+	public void close();
 }
diff --git a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/OtherResponse.java b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/OtherResponse.java
index aa5f933..8e89f9c 100644
--- a/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/OtherResponse.java
+++ b/update/org.eclipse.update.core/src/org/eclipse/update/internal/core/connection/OtherResponse.java
@@ -38,6 +38,16 @@
 		return in;
 	}
 	
+	public void close() {
+        if( null != in ) {
+                try {
+					in.close();
+				} catch (IOException e) {
+				}
+                in = null;
+        }
+	}	
+	
 	/**
 	 * @see IResponse#getInputStream(IProgressMonitor)
 	 */
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/preferences/MainPreferencePage.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/preferences/MainPreferencePage.java
index 54676e7..a0f641f 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/preferences/MainPreferencePage.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/preferences/MainPreferencePage.java
@@ -101,7 +101,8 @@
 		
 		automaticallyChooseMirrorCheckbox =
 			new Button(mainComposite, SWT.CHECK | SWT.LEFT);
-		automaticallyChooseMirrorCheckbox.setText(UpdateUIMessages.MainPreferencePage_automaticallyChooseMirror); 
+		automaticallyChooseMirrorCheckbox.setText(UpdateUIMessages.MainPreferencePage_automaticallyChooseMirror);
+		gd = new GridData();
 		gd.horizontalSpan = 2;
 		automaticallyChooseMirrorCheckbox.setLayoutData(gd);
 
diff --git a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/MirrorsDialog.java b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/MirrorsDialog.java
index b38d373..4230050 100644
--- a/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/MirrorsDialog.java
+++ b/update/org.eclipse.update.ui/src/org/eclipse/update/internal/ui/wizards/MirrorsDialog.java
@@ -11,6 +11,7 @@
 package org.eclipse.update.internal.ui.wizards;
 
 import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.Preferences;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.osgi.util.NLS;
@@ -21,6 +22,7 @@
 import org.eclipse.swt.events.MouseListener;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
 import org.eclipse.swt.widgets.List;
@@ -28,6 +30,7 @@
 import org.eclipse.swt.widgets.Text;
 import org.eclipse.update.core.ISiteWithMirrors;
 import org.eclipse.update.core.IURLEntry;
+import org.eclipse.update.internal.core.UpdateCore;
 import org.eclipse.update.internal.ui.UpdateUIMessages;
 
 
@@ -37,6 +40,7 @@
 	private IURLEntry[] mirrors;
 	private List mirrorsList;
 	private IURLEntry mirrorSelected;
+	private Button automaticallyChooseMirrorCheckbox;
 	//private Button okButton;
 	/**
 	 * @param parentShell
@@ -103,6 +107,13 @@
 
 		mirrorsList.select(0);
 		
+		automaticallyChooseMirrorCheckbox =
+			new Button(composite, SWT.CHECK | SWT.LEFT);
+		automaticallyChooseMirrorCheckbox.setText(UpdateUIMessages.MainPreferencePage_automaticallyChooseMirror);
+		data = new GridData();
+		data.horizontalSpan = 2;
+		automaticallyChooseMirrorCheckbox.setLayoutData(data);		
+		
 		Dialog.applyDialogFont(composite);
 		
 		mirrorsList.addMouseListener( new MouseListener() {
@@ -125,6 +136,11 @@
 		// first entry is the site itself
 		if (i <mirrors.length)
 			mirrorSelected = mirrors[i];
+		if (automaticallyChooseMirrorCheckbox.getSelection()) {
+			Preferences prefs = UpdateCore.getPlugin().getPluginPreferences();
+			prefs.setValue(UpdateCore.P_AUTOMATICALLY_CHOOSE_MIRROR, true);
+			UpdateCore.getPlugin().savePluginPreferences();
+		}
 		super.okPressed();
 	}