Function: nntp-send-xover-command
nntp-send-xover-command is a byte-compiled function defined in
nntp.el.gz.
Signature
(nntp-send-xover-command BEG END &optional WAIT-FOR-REPLY)
Documentation
Send the XOVER command to the server.
Source Code
;; Defined in /usr/src/emacs/lisp/gnus/nntp.el.gz
(defun nntp-send-xover-command (beg end &optional wait-for-reply)
"Send the XOVER command to the server."
(let ((range (format "%d-%d" beg end))
(nntp-inhibit-erase t))
(if (stringp nntp-server-xover)
;; If `nntp-server-xover' is a string, then we just send this
;; command.
(if wait-for-reply
(nntp-send-command-nodelete
"\r?\n\\.\r?\n" nntp-server-xover range)
;; We do not wait for the reply.
(nntp-send-command-nodelete nil nntp-server-xover range))
(let ((commands nntp-xover-commands))
;; `nntp-xover-commands' is a list of possible XOVER commands.
;; We try them all until we get at positive response.
(while (and commands (eq nntp-server-xover 'try))
(nntp-send-command-nodelete "\r?\n\\.\r?\n" (car commands) range)
(with-current-buffer nntp-server-buffer
(goto-char (point-min))
(and (looking-at "[23]") ; No error message.
;; We also have to look at the lines. Some buggy
;; servers give back simple lines with just the
;; article number. How... helpful.
(progn
(forward-line 1)
;; More text after number, or a dot.
(looking-at "[0-9]+\t...\\|\\.\r?\n"))
(setq nntp-server-xover (car commands))))
(setq commands (cdr commands)))
;; If none of the commands worked, we disable XOVER.
(when (eq nntp-server-xover 'try)
(nntp-erase-buffer nntp-server-buffer)
(setq nntp-server-xover nil))
nntp-server-xover))))