diff -r 9f173515ca33 mailnews/base/prefs/content/accountcreation/emailWizard.js
--- a/mailnews/base/prefs/content/accountcreation/emailWizard.js	Wed Dec 23 01:59:55 2009 +0100
+++ b/mailnews/base/prefs/content/accountcreation/emailWizard.js	Wed Dec 23 14:23:22 2009 +0800
@@ -88,16 +88,17 @@ function EmailConfigWizard()
   this._init();
 }
 EmailConfigWizard.prototype =
 {
   _init : function EmailConfigWizard__init()
   {
     gEmailWizardLogger.info("Initializing setup wizard");
     this._probeAbortable = null;
+    this._stopped = false; // true: 'stop' button is clicked by user 
   },
 
   onLoad : function()
   {
     this._domain = "";
     this._email = "";
     this._realname = "";
     this._password = "";
@@ -448,16 +449,21 @@ EmailConfigWizard.prototype =
               },
               function(e) // fetchConfigFromDB failed
               {
                 gEmailWizardLogger.info("fetchConfigFromDB failed: " + e);
                 var initialConfig = new AccountConfig();
                 me._prefillConfig(initialConfig);
                 me.startSpinner("all", "looking_up_settings")
                 me._guessConfig(domain, initialConfig, 'both');
+                // If user clicks the "stop" button,we should cancel the current probe
+                // or probe will reset the fields (such as 'Username') when it's timeout
+                // User should click (Go) button to restart probe. 
+                if ( me._stopped)
+                 me._probeAbortable.cancel() ;
               });
           });
   },
 
   _guessConfig : function(domain, initialConfig, which)
   {
     let me = this;
     // guessConfig takes several callback functions, which we define inline.
@@ -1222,16 +1228,17 @@ EmailConfigWizard.prototype =
 
   /* (Stop) button click handler.  This should stop short any probing or config
    * guessing progress and changing the config details area into manual edit
    * mode.  This button should only be available during probing, after which it
    * is replaced by the (Edit) button.
    */
   onStop : function()
   {
+    this._stopped = true;
     if (!this._probeAbortable)
     {
       gEmailWizardLogger.info("onStop without a _probeAbortable to cancel");
     }
     else
     {
       this._probeAbortable.cancel();
       gEmailWizardLogger.info("onStop cancelled _probeAbortable");
@@ -1241,16 +1248,17 @@ EmailConfigWizard.prototype =
   },
 
   /* (Go) button click handler.  Restarts the config guessing process after a
    * person possibly editing the fields.  The go button replaces either the
    * (Stop) or (Edit) button after they have been clicked.
    */
   onGo : function()
   {
+    this._stopped = false;  //reset the _stopped flag
     // swap out go for stop button
     _hide("go_button");
     // the stop is naturally not hidden so has no place in the code where it is
     // told to be shown
     _show("stop_button");
     this._password = document.getElementById("password").value;
     this.goWithConfigDetails();
     var newConfig = this.getUserConfig();
