summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2011-02-18 00:41:50 +0000
committerKatsumi Yamaoka <yamaoka@jpl.org>2011-02-18 00:41:50 +0000
commitc13bc26baa86db1e95ea8a608958647a7b84084f (patch)
tree663944e4c07048a8712f17b5e8978bac212b35a0
parent1d2c4a492b42338c74e5970618a97fb477ab6ba7 (diff)
downloademacs-c13bc26baa86db1e95ea8a608958647a7b84084f.tar.gz
nnimap.el (nnimap-log-command): Add a newline to the inhibited logging.
(nnimap-credentials): Protect against auth-source-search returning nil. (nnimap-request-list): Protect against not being able to open the server.
-rw-r--r--lisp/gnus/ChangeLog8
-rw-r--r--lisp/gnus/nnimap.el125
2 files changed, 72 insertions, 61 deletions
diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog
index 9c4fc939d84..28533e9ab22 100644
--- a/lisp/gnus/ChangeLog
+++ b/lisp/gnus/ChangeLog
@@ -1,3 +1,11 @@
+2011-02-18 Lars Ingebrigtsen <larsi@gnus.org>
+
+ * nnimap.el (nnimap-log-command): Add a newline to the inhibited
+ logging.
+ (nnimap-credentials): Protect against auth-source-search returning nil.
+ (nnimap-request-list): Protect against not being able to open the
+ server.
+
2011-02-17 Lars Ingebrigtsen <larsi@gnus.org>
* auth-source.el (auth-source-search): Do a two-phase search, one with
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index 7f8ecc1710f..9c93ee8bbd9 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -277,15 +277,16 @@ textual parts.")
(current-buffer)))
(defun nnimap-credentials (address ports)
- (let* ((found (nth 0 (auth-source-search :max 1
- :host address
- :port ports
- :create t)))
- (user (plist-get found :user))
- (secret (plist-get found :secret))
- (secret (if (functionp secret) (funcall secret) secret)))
+ (let ((found (nth 0 (auth-source-search :max 1
+ :host address
+ :port ports
+ :create t))))
(if found
- (list user secret)
+ (list (plist-get found :user)
+ (let ((secret (plist-get found :secret)))
+ (if (functionp secret)
+ (funcall secret)
+ secret)))
nil)))
(defun nnimap-keepalive ()
@@ -1074,60 +1075,62 @@ textual parts.")
(nreverse groups)))
(deffoo nnimap-request-list (&optional server)
- (nnimap-possibly-change-group nil server)
- (with-current-buffer nntp-server-buffer
- (erase-buffer)
- (let ((groups
- (with-current-buffer (nnimap-buffer)
- (nnimap-get-groups)))
- sequences responses)
- (when groups
- (with-current-buffer (nnimap-buffer)
- (setf (nnimap-group nnimap-object) nil)
- (dolist (group groups)
- (setf (nnimap-examined nnimap-object) group)
- (push (list (nnimap-send-command "EXAMINE %S" (utf7-encode group t))
- group)
- sequences))
- (nnimap-wait-for-response (caar sequences))
- (setq responses
- (nnimap-get-responses (mapcar #'car sequences))))
- (dolist (response responses)
- (let* ((sequence (car response))
- (response (cadr response))
- (group (cadr (assoc sequence sequences))))
- (when (and group
- (equal (caar response) "OK"))
- (let ((uidnext (nnimap-find-parameter "UIDNEXT" response))
- highest exists)
- (dolist (elem response)
- (when (equal (cadr elem) "EXISTS")
- (setq exists (string-to-number (car elem)))))
- (when uidnext
- (setq highest (1- (string-to-number (car uidnext)))))
- (cond
- ((null highest)
- (insert (format "%S 0 1 y\n" (utf7-decode group t))))
- ((zerop exists)
- ;; Empty group.
- (insert (format "%S %d %d y\n"
- (utf7-decode group t) highest (1+ highest))))
- (t
- ;; Return the widest possible range.
- (insert (format "%S %d 1 y\n" (utf7-decode group t)
- (or highest exists)))))))))
- t))))
+ (when (nnimap-possibly-change-group nil server)
+ (with-current-buffer nntp-server-buffer
+ (erase-buffer)
+ (let ((groups
+ (with-current-buffer (nnimap-buffer)
+ (nnimap-get-groups)))
+ sequences responses)
+ (when groups
+ (with-current-buffer (nnimap-buffer)
+ (setf (nnimap-group nnimap-object) nil)
+ (dolist (group groups)
+ (setf (nnimap-examined nnimap-object) group)
+ (push (list (nnimap-send-command "EXAMINE %S"
+ (utf7-encode group t))
+ group)
+ sequences))
+ (nnimap-wait-for-response (caar sequences))
+ (setq responses
+ (nnimap-get-responses (mapcar #'car sequences))))
+ (dolist (response responses)
+ (let* ((sequence (car response))
+ (response (cadr response))
+ (group (cadr (assoc sequence sequences))))
+ (when (and group
+ (equal (caar response) "OK"))
+ (let ((uidnext (nnimap-find-parameter "UIDNEXT" response))
+ highest exists)
+ (dolist (elem response)
+ (when (equal (cadr elem) "EXISTS")
+ (setq exists (string-to-number (car elem)))))
+ (when uidnext
+ (setq highest (1- (string-to-number (car uidnext)))))
+ (cond
+ ((null highest)
+ (insert (format "%S 0 1 y\n" (utf7-decode group t))))
+ ((zerop exists)
+ ;; Empty group.
+ (insert (format "%S %d %d y\n"
+ (utf7-decode group t)
+ highest (1+ highest))))
+ (t
+ ;; Return the widest possible range.
+ (insert (format "%S %d 1 y\n" (utf7-decode group t)
+ (or highest exists)))))))))
+ t)))))
(deffoo nnimap-request-newgroups (date &optional server)
- (nnimap-possibly-change-group nil server)
- (with-current-buffer nntp-server-buffer
- (erase-buffer)
- (dolist (group (with-current-buffer (nnimap-buffer)
- (nnimap-get-groups)))
- (unless (assoc group nnimap-current-infos)
- ;; Insert dummy numbers here -- they don't matter.
- (insert (format "%S 0 1 y\n" group))))
- t))
+ (when (nnimap-possibly-change-group nil server)
+ (with-current-buffer nntp-server-buffer
+ (erase-buffer)
+ (dolist (group (with-current-buffer (nnimap-buffer)
+ (nnimap-get-groups)))
+ (unless (assoc group nnimap-current-infos)
+ ;; Insert dummy numbers here -- they don't matter.
+ (insert (format "%S 0 1 y\n" group))))
+ t)))
(deffoo nnimap-retrieve-group-data-early (server infos)
(when (nnimap-possibly-change-group nil server)
@@ -1588,7 +1591,7 @@ textual parts.")
(goto-char (point-max))
(insert (format-time-string "%H:%M:%S") " "
(if nnimap-inhibit-logging
- "(inhibited)"
+ "(inhibited)\n"
command)))
command)