(require 'elmo-msgdb)
(eval-when-compile
- (condition-case nil
- (progn
- (require 'starttls))
- (error))
(require 'elmo-cache)
- (require 'elmo-util)
- (defun-maybe starttls-negotiate (a)))
+ (require 'elmo-util))
(require 'elmo-net)
(eval-and-compile
(luna-define-method elmo-network-initialize-session ((session
elmo-nntp-session))
- (set-process-filter (elmo-network-session-process-internal session)
- 'elmo-nntp-process-filter)
- (with-current-buffer (elmo-network-session-buffer session)
- (setq elmo-nntp-read-point (point-min))
- (or (elmo-nntp-read-response session t)
- (error "Cannot open network"))
- (when (eq (elmo-network-stream-type-symbol
- (elmo-network-session-stream-type-internal session))
- 'starttls)
- (elmo-nntp-send-command session "starttls")
- (or (elmo-nntp-read-response session)
- (error "Cannot open starttls session"))
- (starttls-negotiate
- (elmo-network-session-process-internal session)))))
-
+ (let ((process (elmo-network-session-process-internal session)))
+ (set-process-filter (elmo-network-session-process-internal session)
+ 'elmo-nntp-process-filter)
+ (with-current-buffer (elmo-network-session-buffer session)
+ (setq elmo-nntp-read-point (point-min))
+ ;; Skip garbage output from process before greeting.
+ (while (and (memq (process-status process) '(open run))
+ (goto-char (point-max))
+ (forward-line -1)
+ (not (looking-at "20[01]")))
+ (accept-process-output process 1))
+ (setq elmo-nntp-read-point (point))
+ (or (elmo-nntp-read-response session t)
+ (error "Cannot open network"))
+ (when (eq (elmo-network-stream-type-symbol
+ (elmo-network-session-stream-type-internal session))
+ 'starttls)
+ (elmo-nntp-send-command session "starttls")
+ (or (elmo-nntp-read-response session)
+ (error "Cannot open starttls session"))
+ (starttls-negotiate process)))))
(luna-define-method elmo-network-authenticate-session ((session
elmo-nntp-session))
(goto-char (point-min))
(read (current-buffer)))))
-(defun elmo-nntp-list-folder (spec)
+(defun elmo-nntp-list-folder (spec &optional nohide)
(let ((session (elmo-nntp-get-session spec))
(group (elmo-nntp-spec-group spec))
(killed (and elmo-use-killed-list
(with-current-buffer (elmo-network-session-buffer session)
(std11-field-body "Newsgroups")))))
-(defun elmo-nntp-read-msg (spec number outbuf)
+(defun elmo-nntp-read-msg (spec number outbuf &optional msgdb unread)
(let ((session (elmo-nntp-get-session spec)))
(with-current-buffer (elmo-network-session-buffer session)
(elmo-nntp-select-group session (elmo-nntp-spec-group spec))
(if (not (string= postfix ""))
(save-excursion
(replace-regexp "^\\(211 [0-9]+ [0-9]+ [0-9]+ [^ \n]+\\).*$"
- (concat "\\1" postfix)))))
+ (concat "\\1"
+ (elmo-replace-in-string
+ postfix
+ "\\\\" "\\\\\\\\\\\\\\\\"))))))
(let (len min max group)
(while (not (eobp))
(condition-case ()