(nnimap-update-info): Remove double setting of high.
[gnus] / lisp / nnimap.el
index 68ee9d4..56a0392 100644 (file)
@@ -316,15 +316,20 @@ textual parts.")
                   (setq port (or nnimap-server-port "imap"))
                   'starttls))
                '("imap"))
-              ((eq nnimap-stream 'ssl)
-               (open-tls-stream
-                "*nnimap*" (current-buffer) nnimap-address
-                (setq port
-                      (or nnimap-server-port
-                          (if (netrc-find-service-number "imaps")
-                              "imaps"
-                            "993"))))
-               '("143" "993" "imap" "imaps"))))
+              ((memq nnimap-stream '(ssl tls))
+               (funcall (if (and nil
+                                 (fboundp 'open-gnutls-stream))
+                            'open-gnutls-stream
+                          'open-tls-stream)
+                        "*nnimap*" (current-buffer) nnimap-address
+                        (setq port
+                              (or nnimap-server-port
+                                  (if (netrc-find-service-number "imaps")
+                                      "imaps"
+                                    "993"))))
+               '("143" "993" "imap" "imaps"))
+              (t
+               (error "Unknown stream type: %s" nnimap-stream))))
             connection-result login-result credentials)
        (setf (nnimap-process nnimap-object)
              (get-buffer-process (current-buffer)))
@@ -424,7 +429,10 @@ textual parts.")
     result))
 
 (deffoo nnimap-close-server (&optional server)
-  t)
+  (when (nnoo-change-server 'nnimap server nil)
+    (ignore-errors
+      (delete-process (get-buffer-process (nnimap-buffer))))
+    t))
 
 (deffoo nnimap-request-close ()
   t)
@@ -623,10 +631,11 @@ textual parts.")
                (nnimap-update-infos marks (list info)))
              (goto-char (point-max))
              (let ((uidnext (nth 5 (car marks))))
-               (setq high (if uidnext
-                              (1- uidnext)
-                            (nth 3 (car marks)))
-                     low (or (nth 4 (car marks)) uidnext)))))
+               (setq high (or (if uidnext
+                                   (1- uidnext)
+                                 (nth 3 (car marks)))
+                               0)
+                     low (or (nth 4 (car marks)) uidnext 1)))))
          (erase-buffer)
          (insert
           (format
@@ -643,6 +652,11 @@ textual parts.")
     (with-current-buffer (nnimap-buffer)
       (car (nnimap-command "DELETE %S" (utf7-encode group t))))))
 
+(deffoo nnimap-request-rename-group (group new-name &optional server)
+  (when (nnimap-possibly-change-group nil server)
+    (with-current-buffer (nnimap-buffer)
+      (car (nnimap-command "RENAME %S %S" (utf7-encode group t) (utf7-encode new-name t))))))
+
 (deffoo nnimap-request-expunge-group (group &optional server)
   (when (nnimap-possibly-change-group group server)
     (with-current-buffer (nnimap-buffer)
@@ -920,7 +934,8 @@ textual parts.")
                     (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))))))
+       (insert (format "%S 0 1 y\n" group))))
+    t))
 
 (deffoo nnimap-retrieve-group-data-early (server infos)
   (when (nnimap-possibly-change-group nil server)
@@ -973,7 +988,7 @@ textual parts.")
             (nnimap-possibly-change-group nil server))
     (with-current-buffer (nnimap-buffer)
       ;; Wait for the final data to trickle in.
-      (when (nnimap-wait-for-response (cadar sequences))
+      (when (nnimap-wait-for-response (cadar sequences) t)
        ;; Now we should have all the data we need, no matter whether
        ;; we're QRESYNCING, fetching all the flags from scratch, or
        ;; just fetching the last 100 flags per group.
@@ -1029,9 +1044,6 @@ textual parts.")
           group
           (cons (car (gnus-active group))
                 (or high (1- uidnext)))))
-       (when (and (not high)
-                  uidnext)
-         (setq high (1- uidnext)))
        ;; Then update the list of read articles.
        (let* ((unread
                (gnus-compress-sequence
@@ -1250,7 +1262,7 @@ textual parts.")
                        (point-min))
                      t)))
       (when messagep
-       (message "Read %dKB" (/ (buffer-size) 1000)))
+       (message "nnimap read %dk" (/ (buffer-size) 1000)))
       (nnheader-accept-process-output process)
       (goto-char (point-max)))
     openp))