[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