From 008cad902f3434dc8c490dd0488ae93df4f16d9c Mon Sep 17 00:00:00 2001 From: Gnus developers Date: Tue, 25 Jan 2011 23:51:40 +0000 Subject: [PATCH] Merge changes made in Gnus trunk. mm-view.el (mm-display-shell-script-inline): Fix typo in docstring. (mm-display-javascript-inline): New function. mm-decode.el (mm-inline-media-tests): Add application/javascript viewing function. 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. --- lisp/gnus/ChangeLog | 19 +++++++++++++++++++ lisp/gnus/mm-decode.el | 1 + lisp/gnus/mm-view.el | 6 +++++- lisp/gnus/nnimap.el | 11 +++++++++-- lisp/gnus/proto-stream.el | 30 +++++++++++++++++------------- 5 files changed, 51 insertions(+), 16 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index af4bebdd40..47d08e8609 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,22 @@ +2011-01-25 Lars Ingebrigtsen + + * 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. + +2011-01-25 Julien Danjou + + * mm-view.el (mm-display-shell-script-inline): Fix typo in docstring. + (mm-display-javascript-inline): New function. + + * mm-decode.el (mm-inline-media-tests): Add application/javascript + viewing function. + 2011-01-25 Katsumi Yamaoka * shr.el (shr-expand-newlines): Fix variable name. diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index 019a0e8f66..d7bc882a84 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -239,6 +239,7 @@ before the external MIME handler is invoked." ("application/x-shellscript" mm-display-shell-script-inline identity) ("application/x-sh" mm-display-shell-script-inline identity) ("text/x-sh" mm-display-shell-script-inline identity) + ("application/javascript" mm-display-javascript-inline identity) ("text/dns" mm-display-dns-inline identity) ("text/x-org" mm-display-org-inline identity) ("text/html" diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el index e3286b854e..d63d20239d 100644 --- a/lisp/gnus/mm-view.el +++ b/lisp/gnus/mm-view.el @@ -636,9 +636,13 @@ (mm-display-inline-fontify handle 'org-mode)) (defun mm-display-shell-script-inline (handle) - "Show an shell script from HANDLE inline." + "Show a shell script from HANDLE inline." (mm-display-inline-fontify handle 'shell-script-mode)) +(defun mm-display-javascript-inline (handle) + "Show JavsScript code from HANDLE inline." + (mm-display-inline-fontify handle 'javascript-mode)) + ;; id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2) ;; us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 } (defvar mm-pkcs7-signed-magic diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index dccdb96827..6f7383062d 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/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" @@ -411,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")) diff --git a/lisp/gnus/proto-stream.el b/lisp/gnus/proto-stream.el index ec0c9ea9b7..9117ac9f4e 100644 --- a/lisp/gnus/proto-stream.el +++ b/lisp/gnus/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)) -- 2.20.1