]> git.eshelyaron.com Git - emacs.git/commitdiff
* net/tramp.el (tramp-read-passwd): Suspend the timers while reading
authorThierry Volpiatto <thierry.volpiatto@gmail.com>
Sun, 23 Mar 2014 09:22:16 +0000 (10:22 +0100)
committerMichael Albinus <michael.albinus@gmx.de>
Sun, 23 Mar 2014 09:22:16 +0000 (10:22 +0100)
the password.

lisp/ChangeLog
lisp/net/tramp.el

index feb78f59fc7d7f82092c4e6230d9fb98583935ca..f00bef537f64c15a445504bfdf89805e483fdbee 100644 (file)
@@ -1,3 +1,8 @@
+2014-03-23  Thierry Volpiatto  <thierry.volpiatto@gmail.com>
+
+       * net/tramp.el (tramp-read-passwd): Suspend the timers while reading
+       the password.
+
 2014-03-23  Dmitry Gutov  <dgutov@yandex.ru>
 
        * emacs-lisp/package.el (package-show-package-list): If the buffer
index b9b64ed70f82c912ce342668e183646683aca501..5f448ecdbbd097eb0fe5163c57f8a0e175288890 100644 (file)
@@ -4119,40 +4119,48 @@ Invokes `password-read' if available, `read-passwd' else."
              (with-current-buffer (process-buffer proc)
                (tramp-check-for-regexp proc tramp-password-prompt-regexp)
                (format "%s for %s " (capitalize (match-string 1)) key))))
-         auth-info auth-passwd)
-    (with-parsed-tramp-file-name key nil
-      (prog1
-         (or
-          ;; See if auth-sources contains something useful, if it's
-          ;; bound.  `auth-source-user-or-password' is an obsoleted
-          ;; function, it has been replaced by `auth-source-search'.
-          (and (boundp 'auth-sources)
-               (tramp-get-connection-property v "first-password-request" nil)
-               ;; Try with Tramp's current method.
-                (if (fboundp 'auth-source-search)
-                   (setq auth-info
-                         (tramp-compat-funcall
-                          'auth-source-search
-                          :max 1
-                          :user (or tramp-current-user t)
-                          :host tramp-current-host
-                          :port tramp-current-method)
-                         auth-passwd (plist-get (nth 0 auth-info) :secret)
-                         auth-passwd (if (functionp auth-passwd)
-                                         (funcall auth-passwd)
-                                       auth-passwd))
-                  (tramp-compat-funcall
-                   'auth-source-user-or-password
-                   "password" tramp-current-host tramp-current-method)))
-          ;; Try the password cache.
-          (when (functionp 'password-read)
-            (let ((password
-                   (tramp-compat-funcall 'password-read pw-prompt key)))
-              (tramp-compat-funcall 'password-cache-add key password)
-              password))
-          ;; Else, get the password interactively.
-          (read-passwd pw-prompt))
-       (tramp-set-connection-property v "first-password-request" nil)))))
+        ;; We suspend the timers while reading the password.
+         (stimers (with-timeout-suspend))
+        auth-info auth-passwd)
+
+    (unwind-protect
+       (with-parsed-tramp-file-name key nil
+         (prog1
+             (or
+              ;; See if auth-sources contains something useful, if
+              ;; it's bound.  `auth-source-user-or-password' is an
+              ;; obsoleted function, it has been replaced by
+              ;; `auth-source-search'.
+              (and (boundp 'auth-sources)
+                   (tramp-get-connection-property
+                    v "first-password-request" nil)
+                   ;; Try with Tramp's current method.
+                   (if (fboundp 'auth-source-search)
+                       (setq auth-info
+                             (tramp-compat-funcall
+                              'auth-source-search
+                              :max 1
+                              :user (or tramp-current-user t)
+                              :host tramp-current-host
+                              :port tramp-current-method)
+                             auth-passwd (plist-get (nth 0 auth-info) :secret)
+                             auth-passwd (if (functionp auth-passwd)
+                                             (funcall auth-passwd)
+                                           auth-passwd))
+                     (tramp-compat-funcall
+                      'auth-source-user-or-password
+                      "password" tramp-current-host tramp-current-method)))
+              ;; Try the password cache.
+              (when (functionp 'password-read)
+                (let ((password
+                       (tramp-compat-funcall 'password-read pw-prompt key)))
+                  (tramp-compat-funcall 'password-cache-add key password)
+                  password))
+              ;; Else, get the password interactively.
+              (read-passwd pw-prompt))
+           (tramp-set-connection-property v "first-password-request" nil)))
+      ;; Reenable the timers.
+      (with-timeout-unsuspend stimers))))
 
 ;;;###tramp-autoload
 (defun tramp-clear-passwd (vec)