(mml2015-epg-sign): Save the signing keys in
[gnus] / lisp / pop3.el
index 5fc0e3a..eeb7d70 100644 (file)
@@ -1,7 +1,7 @@
 ;;; pop3.el --- Post Office Protocol (RFC 1460) interface
 
 ;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-;;   2004, 2005 Free Software Foundation, Inc.
+;;   2004, 2005, 2006 Free Software Foundation, Inc.
 
 ;; Author: Richard L. Pieri <ratinox@peorth.gweep.net>
 ;; Maintainer: FSF
@@ -89,8 +89,12 @@ If `pop3-leave-mail-on-server' is non-nil the mail is to be left
 on the POP server after fetching.  Note that POP servers maintain
 no state information between sessions, so what the client
 believes is there and what is actually there may not match up.
-If they do not, then the whole thing can fall apart and leave you
-with a corrupt mailbox."
+If they do not, then you may get duplicate mails or the whole
+thing can fall apart and leave you with a corrupt mailbox."
+  ;; We can't use the UILD support from XEmacs mail-lib or cvs.m17n.org:
+  ;; http://thread.gmane.org/v9lld8fml4.fsf@marauder.physik.uni-ulm.de
+  ;; http://thread.gmane.org/b9yy8hzy9ej.fsf@jpl.org
+  ;; Any volunteer to re-implement this?
   :version "22.1" ;; Oort Gnus
   :type 'boolean
   :group 'pop3)
@@ -167,6 +171,11 @@ Shorter values mean quicker response, but are more CPU intensive.")
             (pop3-dele process n))
          (setq n (+ 1 n))
          (if pop3-debug (sit-for 1) (sit-for 0.1))) ; why?
+      (when (and pop3-leave-mail-on-server
+                (> n 1))
+       (message "pop3.el doesn't support UIDL.  Setting `pop3-leave-mail-on-server'
+to %s might not give the result you'd expect." pop3-leave-mail-on-server)
+       (sit-for 1))
       (pop3-quit process))
     (kill-buffer crashbuf))
   t)
@@ -194,6 +203,7 @@ Shorter values mean quicker response, but are more CPU intensive.")
 
 (autoload 'open-tls-stream "tls")
 (autoload 'starttls-open-stream "starttls")
+(autoload 'starttls-negotiate "starttls") ; avoid warning
 
 (defcustom pop3-stream-type nil
   "*Transport security type for POP3 connexions.
@@ -202,7 +212,7 @@ SSL/TSL-secured stream) or `starttls' (use the starttls mechanism
 to turn on TLS security after opening the stream).  However, if
 this is nil, `ssl' is assumed for connexions to port
 995 (pop3s)."
-  :version "23.1"                      ; fixme?
+  :version "23.0" ;; No Gnus
   :group 'pop3
   :type '(choice (const :tag "Plain" nil)
                 (const :tag "SSL/TLS" ssl)
@@ -222,7 +232,11 @@ Returns the process associated with the connection."
       (setq process
            (cond
             ((or (eq pop3-stream-type 'ssl)
-                 (and (not pop3-stream-type) (= port 995))) ; pop3s
+                 (and (not pop3-stream-type) (member port '(995 "pop3s"))))
+             ;; gnutls-cli, openssl don't accept service names
+             (if (or (equal port "pop3s")
+                     (null port))
+                 (setq port 995))
              (let ((process (open-tls-stream "POP" (current-buffer)
                                              mailhost port)))
                (when process
@@ -232,13 +246,18 @@ Returns the process associated with the connection."
                           (goto-char (point-max))
                           (forward-line -1)
                           (if (looking-at "\\+OK")
-                              (delete-region (point-min) (point))
+                              (progn
+                                (delete-region (point-min) (point))
+                                nil)
                             (pop3-quit process)
                             (error "POP SSL connexion failed"))))
                  process)))
             ((eq pop3-stream-type 'starttls)
+             ;; gnutls-cli, openssl don't accept service names
+             (if (equal port "pop3")
+                 (setq port 110))
              (let ((process (starttls-open-stream "POP" (current-buffer)
-                                                  mailhost port)))
+                                                  mailhost (or port 110))))
                (pop3-send-command process "STLS")
                (let ((response (pop3-read-response process t)))
                  (if (and response (string-match "+OK" response))