X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fnnimap.el;h=2c3a38a75bdabe077a0329f43a238bc715a334fd;hb=b0eccd76f35ef80c3ad13f09e588d49358e9c22a;hp=2faa2befc9fa452faccf5449f057dc363cd56ffd;hpb=c87b9cf19324dea7d86c8f0adc5a746639b5f76d;p=gnus diff --git a/lisp/nnimap.el b/lisp/nnimap.el index 2faa2befc..2c3a38a75 100644 --- a/lisp/nnimap.el +++ b/lisp/nnimap.el @@ -318,7 +318,8 @@ textual parts.") (setq port (or nnimap-server-port "imap"))) '("imap")) ((eq nnimap-stream 'starttls) - (let ((tls-program "openssl s_client %s -connect %h:%p -no_ssl2 -ign_eof -starttls imap")) + (let ((tls-program + '("openssl s_client -connect %h:%p -no_ssl2 -ign_eof -starttls imap"))) (open-tls-stream "*nnimap*" (current-buffer) nnimap-address (setq port (or nnimap-server-port "imap")))) @@ -434,6 +435,7 @@ textual parts.") (when (nnoo-change-server 'nnimap server nil) (ignore-errors (delete-process (get-buffer-process (nnimap-buffer)))) + (nnoo-close-server 'nnimap server) t)) (deffoo nnimap-request-close () @@ -1289,7 +1291,7 @@ textual parts.") (setq start end)) (setq start (point)) (goto-char end)) - (while (re-search-forward "\n* [0-9]+ FETCH " start t) + (while (re-search-forward "^\\* [0-9]+ FETCH " start t) (setq elems (read (current-buffer))) (push (cons (cadr (memq 'UID elems)) (cadr (memq 'FLAGS elems))) @@ -1309,6 +1311,25 @@ textual parts.") (setq nnimap-status-string "Read-only server") nil) +(deffoo nnimap-request-thread (id) + (let* ((refs (split-string + (or (mail-header-references (gnus-summary-article-header)) + ""))) + (cmd (let ((value + (format + "(OR HEADER REFERENCES %s HEADER Message-Id %s)" + id id))) + (dolist (refid refs value) + (setq value (format + "(OR (OR HEADER Message-Id %s HEADER REFERENCES %s) %s)" + refid refid value))))) + (result + (with-current-buffer (nnimap-buffer) + (nnimap-command "UID SEARCH %s" cmd)))) + (gnus-fetch-headers (and (car result) + (delete 0 (mapcar #'string-to-number + (cdr (assoc "SEARCH" (cdr result))))))))) + (defun nnimap-possibly-change-group (group server) (let ((open-result t)) (when (and server