(decode-coding-string string elmo-nntp-group-coding-system)
string))
+;; For debugging.
+(defvar elmo-nntp-debug nil
+ "Non-nil forces NNTP folder as debug mode.
+Debug information is inserted in the buffer \"*NNTP DEBUG*\"")
+
+;;; Debug
+(defsubst elmo-nntp-debug (message &rest args)
+ (if elmo-nntp-debug
+ (let ((biff (string-match "BIFF-" (buffer-name)))
+ pos)
+ (with-current-buffer (get-buffer-create (concat "*NNTP DEBUG*"
+ (if biff "BIFF")))
+ (goto-char (point-max))
+ (setq pos (point))
+ (insert (apply 'format message args) "\n")))))
+
;;; ELMO NNTP folder
(eval-and-compile
(luna-define-class elmo-nntp-folder (elmo-net-folder)
(elmo-nntp-send-command session
(format "authinfo user %s"
(elmo-network-session-user-internal
- session)))
+ session))
+ nil
+ 'no-log)
(or (elmo-nntp-read-response session)
(signal 'elmo-authenticate-error '(authinfo)))
(elmo-nntp-send-command
session
(format "authinfo pass %s"
- (elmo-get-passwd (elmo-network-session-password-key session))))
+ (elmo-get-passwd (elmo-network-session-password-key session)))
+ nil
+ 'no-log)
(or (elmo-nntp-read-response session)
(signal 'elmo-authenticate-error '(authinfo))))))
(save-excursion
(set-buffer (process-buffer process))
(goto-char (point-max))
- (insert output)))
+ (insert output)
+ (elmo-nntp-debug "RECEIVED: %s\n" output)))
(defun elmo-nntp-send-mode-reader (session)
(elmo-nntp-send-command session "mode reader")
(if (null (elmo-nntp-read-response session t))
(message "Mode reader failed")))
-(defun elmo-nntp-send-command (session command &optional noerase)
+(defun elmo-nntp-send-command (session command &optional noerase no-log)
(with-current-buffer (elmo-network-session-buffer session)
(unless noerase
(erase-buffer)
(goto-char (point-min)))
(setq elmo-nntp-read-point (point))
+ (elmo-nntp-debug "SEND: %s\n" (if no-log "<NO LOGGING>" command))
(process-send-string (elmo-network-session-process-internal
session) command)
(process-send-string (elmo-network-session-process-internal
(defun elmo-nntp-folder-list-subfolders (folder one-level)
(let ((session (elmo-nntp-get-session folder))
(case-fold-search nil)
- response ret-val top-ng append-serv use-list-active start)
+ response ret-val top-ng username append-serv use-list-active start)
(with-temp-buffer
(set-buffer-multibyte nil)
(if (and (elmo-nntp-folder-group-internal folder)
(when (> len elmo-display-progress-threshold)
(elmo-display-progress
'elmo-nntp-list-folders "Parsing active..." 100))))
- (unless (string= (elmo-net-folder-server-internal folder)
- elmo-nntp-default-server)
+
+ (setq username (elmo-net-folder-user-internal folder))
+ (when (and username
+ elmo-nntp-default-user
+ (string= username elmo-nntp-default-user))
+ (setq username nil))
+
+ (when (or username ; XXX: ad-hoc fix against username includes "@"
+ (not (string= (elmo-net-folder-server-internal folder)
+ elmo-nntp-default-server)))
(setq append-serv (concat "@" (elmo-net-folder-server-internal
folder))))
(unless (eq (elmo-net-folder-port-internal folder) elmo-nntp-default-port)
(mapcar '(lambda (fld)
(if (consp fld)
(list (concat "-" (elmo-nntp-decode-group-string (car fld))
- (and (elmo-net-folder-user-internal folder)
+ (and username
(concat
":"
- (elmo-net-folder-user-internal folder)))
+ username))
(and append-serv
(concat append-serv))))
(concat "-" (elmo-nntp-decode-group-string fld)
- (and (elmo-net-folder-user-internal folder)
- (concat ":" (elmo-net-folder-user-internal
- folder)))
+ (and username
+ (concat ":" username))
(and append-serv
(concat append-serv)))))
ret-val)))
(if (not (string-match
"^2" (setq response (elmo-nntp-read-raw-response
session))))
- (error (concat "NNTP error: " response))))))
+ (error "NNTP error: %s" response)))))
(defsubst elmo-nntp-send-data-line (session line)
"Send LINE to SESSION."