[gnus git] branch master updated: =2= Prefer plain LOGIN if it's enabled and we're using an encrypted connection. ; Alter the interface functions to also return the actual stream type used: network or tls.

Lars Magne Ingebrigtsen <[email protected]>
Newsgroups gmane.emacs.gnus.cvs
Message-ID <[email protected]>
       via  f842d586ed445171f1efac765755f17ae9f94d19 (commit)
       via  1386b47d3802a43fa2ce72db24cfeff015b81569 (commit)
      from  3272a40813e863cfac3bdab6a62795e93013ece1 (commit)


- Log -----------------------------------------------------------------
commit f842d586ed445171f1efac765755f17ae9f94d19
Author: Lars Magne Ingebrigtsen <[email protected]>
Date:   Tue Jan 25 13:58:22 2011 -0800

    Prefer plain LOGIN if it's enabled and we're using an encrypted connection.
    
    It requires fewer round trips than CRAM-MD5, and it's less likely to
    be buggy,

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 1a9aa01..bf8eec5 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -2,6 +2,9 @@
 
 	* nnimap.el (nnimap-open-connection-1): Store the actual stream type
 	used.
+	(nnimap-login): Prefer plain LOGIN if it's enabled (since it requires
+	fewer round trips than CRAM-MD5, and it's less likely to be buggy), and
+	we're using an encrypted connection.
 
 	* proto-stream.el: Alter the interface functions to also return the
 	actual stream type used: network or tls.
diff --git a/lisp/nnimap.el b/lisp/nnimap.el
index 06a2868..6f73830 100644
--- a/lisp/nnimap.el
+++ b/lisp/nnimap.el
@@ -412,6 +412,12 @@ textual parts.")
 
 (defun nnimap-login (user password)
   (cond
+   ;; Prefer plain LOGIN if it's enabled (since it requires fewer
+   ;; round trips than CRAM-MD5, and it's less likely to be buggy),
+   ;; and we're using an encrypted connection.
+   ((and (not (nnimap-capability "LOGINDISABLED"))
+	 (eq (nnimap-stream-type nnimap-object) 'tls))
+    (nnimap-command "LOGIN %S %S" user password))
    ((nnimap-capability "AUTH=CRAM-MD5")
     (erase-buffer)
     (let ((sequence (nnimap-send-command "AUTHENTICATE CRAM-MD5"))

commit 1386b47d3802a43fa2ce72db24cfeff015b81569
Author: Lars Magne Ingebrigtsen <[email protected]>
Date:   Tue Jan 25 13:52:11 2011 -0800

    Alter the interface functions to also return the actual stream type used: network or tls.

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index ac487d3..1a9aa01 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,11 @@
+2011-01-25  Lars Ingebrigtsen  <[email protected]>
+
+	* nnimap.el (nnimap-open-connection-1): Store the actual stream type
+	used.
+
+	* proto-stream.el: Alter the interface functions to also return the
+	actual stream type used: network or tls.
+
 2011-01-25  Julien Danjou  <[email protected]>
 
 	* mm-view.el (mm-display-shell-script-inline): Fix typo in docstring.
diff --git a/lisp/nnimap.el b/lisp/nnimap.el
index dccdb96..06a2868 100644
--- a/lisp/nnimap.el
+++ b/lisp/nnimap.el
@@ -124,7 +124,7 @@ textual parts.")
 
 (defstruct nnimap
   group process commands capabilities select-result newlinep server
-  last-command-time greeting examined)
+  last-command-time greeting examined stream-type)
 
 (defvar nnimap-object nil)
 
@@ -350,7 +350,7 @@ textual parts.")
            login-result credentials)
       (when nnimap-server-port
 	(setq ports (append ports (list nnimap-server-port))))
-      (destructuring-bind (stream greeting capabilities)
+      (destructuring-bind (stream greeting capabilities stream-type)
 	  (open-protocol-stream
 	   "*nnimap*" (current-buffer) nnimap-address (car (last ports))
 	   :type nnimap-stream
@@ -362,6 +362,7 @@ textual parts.")
 	     (when (gnus-string-match-p "STARTTLS" capabilities)
 	       "1 STARTTLS\r\n")))
 	(setf (nnimap-process nnimap-object) stream)
+	(setf (nnimap-stream-type nnimap-object) stream-type)
 	(if (not stream)
 	    (progn
 	      (nnheader-report 'nnimap "Unable to contact %s:%s via %s"
diff --git a/lisp/proto-stream.el b/lisp/proto-stream.el
index ec0c9ea..9117ac9 100644
--- a/lisp/proto-stream.el
+++ b/lisp/proto-stream.el
@@ -105,13 +105,15 @@ command to switch on STARTTLS otherwise."
 	   (funcall (intern (format "proto-stream-open-%s" type) obarray)
 		    name buffer host service parameters)))
       (if (null open-result)
-	  (list nil nil nil)
-	(destructuring-bind (stream greeting capabilities) open-result
+	  (list nil nil nil type)
+	(let ((stream (car open-result)))
 	  (list (and stream
 		     (memq (process-status stream)
 			   '(open run))
 		     stream)
-		greeting capabilities))))))
+		(nth 1 open-result)
+		(nth 2 open-result)
+		(nth 3 open-result)))))))
 
 (defun proto-stream-open-network-only (name buffer host service parameters)
   (let ((start (with-current-buffer buffer (point)))
@@ -119,7 +121,8 @@ command to switch on STARTTLS otherwise."
     (list stream
 	  (proto-stream-get-response
 	   stream start (proto-stream-eoc parameters))
-	  nil)))
+	  nil
+	  'network)))
 
 (defun proto-stream-open-network (name buffer host service parameters)
   (let* ((start (with-current-buffer buffer (point)))
@@ -130,7 +133,7 @@ command to switch on STARTTLS otherwise."
 	 (greeting (proto-stream-get-response stream start eoc))
 	 success)
     (if (not capability-command)
-	(list stream greeting nil)
+	(list stream greeting nil 'network)
       (let* ((capabilities
 	      (proto-stream-command stream capability-command eoc))
 	     (starttls-command
@@ -148,7 +151,7 @@ command to switch on STARTTLS otherwise."
 		(delete-process stream)
 		nil)
 	    ;; Otherwise, just return this plain network connection.
-	    (list stream greeting capabilities)))
+	    (list stream greeting capabilities 'network)))
 	 ;; We have some kind of STARTTLS support, so we try to
 	 ;; upgrade the connection opportunistically.
 	 ((or (fboundp 'open-gnutls-stream)
@@ -176,7 +179,7 @@ command to switch on STARTTLS otherwise."
 		    (progn
 		      (delete-process stream)
 		      nil)
-		  (list stream greeting capabilities)))
+		  (list stream greeting capabilities 'network)))
 	    ;; The server said it was OK to start doing STARTTLS negotiations.
 	    (if (fboundp 'open-gnutls-stream)
 		(gnutls-negotiate stream nil)
@@ -193,7 +196,7 @@ command to switch on STARTTLS otherwise."
 	    ;; Re-get the capabilities, since they may have changed
 	    ;; after switching to TLS.
 	    (list stream greeting
-		  (proto-stream-command stream capability-command eoc))))
+		  (proto-stream-command stream capability-command eoc) 'tls)))
 	 ;; We don't have STARTTLS support available, but the caller
 	 ;; requested a STARTTLS connection, so we give up.
 	 ((eq (cadr (memq :type parameters)) 'starttls)
@@ -201,7 +204,7 @@ command to switch on STARTTLS otherwise."
 	  nil)
 	 ;; Fall back on using a plain network stream.
 	 (t
-	  (list stream greeting capabilities)))))))
+	  (list stream greeting capabilities 'network)))))))
 
 (defun proto-stream-command (stream command eoc)
   (let ((start (with-current-buffer (process-buffer stream) (point-max))))
@@ -242,7 +245,7 @@ command to switch on STARTTLS otherwise."
 	  (when (re-search-forward (proto-stream-eoc parameters) nil t)
 	    (goto-char (match-beginning 0))
 	    (delete-region (point-min) (line-beginning-position))))
-	(proto-stream-capability-open start stream parameters)))))
+	(proto-stream-capability-open start stream parameters 'tls)))))
 
 (defun proto-stream-open-shell (name buffer host service parameters)
   (proto-stream-capability-open
@@ -255,16 +258,17 @@ command to switch on STARTTLS otherwise."
 		     (format-spec-make
 		      ?s host
 		      ?p service))))
-   parameters))
+   parameters 'network))
 
-(defun proto-stream-capability-open (start stream parameters)
+(defun proto-stream-capability-open (start stream parameters stream-type)
   (let ((capability-command (cadr (memq :capability-command parameters)))
 	(greeting (proto-stream-get-response
 		   stream start (proto-stream-eoc parameters))))
     (list stream greeting
 	  (and capability-command
 	       (proto-stream-command
-		stream capability-command (proto-stream-eoc parameters))))))
+		stream capability-command (proto-stream-eoc parameters)))
+	  stream-type)))
 
 (defun proto-stream-eoc (parameters)
   (or (cadr (memq :end-of-command parameters))

-----------------------------------------------------------------------
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we listed those
revisions in full, above.

Summary of changes:
 lisp/ChangeLog       |   11 +++++++++++
 lisp/nnimap.el       |   11 +++++++++--
 lisp/proto-stream.el |   30 +++++++++++++++++-------------
 3 files changed, 37 insertions(+), 15 deletions(-)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Gnus Project".

The branch, master has been updated


hooks/post-receive
-- 
Gnus Project
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.