1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-13 09:30:24 -08:00

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.
This commit is contained in:
Gnus developers 2011-01-25 23:51:40 +00:00 committed by Katsumi Yamaoka
parent 7e6e2304f8
commit 008cad902f
5 changed files with 51 additions and 16 deletions

View file

@ -1,3 +1,22 @@
2011-01-25 Lars Ingebrigtsen <larsi@gnus.org>
* 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 <julien@danjou.info>
* 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 <yamaoka@jpl.org> 2011-01-25 Katsumi Yamaoka <yamaoka@jpl.org>
* shr.el (shr-expand-newlines): Fix variable name. * shr.el (shr-expand-newlines): Fix variable name.

View file

@ -239,6 +239,7 @@ before the external MIME handler is invoked."
("application/x-shellscript" mm-display-shell-script-inline identity) ("application/x-shellscript" mm-display-shell-script-inline identity)
("application/x-sh" mm-display-shell-script-inline identity) ("application/x-sh" mm-display-shell-script-inline identity)
("text/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/dns" mm-display-dns-inline identity)
("text/x-org" mm-display-org-inline identity) ("text/x-org" mm-display-org-inline identity)
("text/html" ("text/html"

View file

@ -636,9 +636,13 @@
(mm-display-inline-fontify handle 'org-mode)) (mm-display-inline-fontify handle 'org-mode))
(defun mm-display-shell-script-inline (handle) (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)) (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) ;; id-signedData OBJECT IDENTIFIER ::= { iso(1) member-body(2)
;; us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 } ;; us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2 }
(defvar mm-pkcs7-signed-magic (defvar mm-pkcs7-signed-magic

View file

@ -124,7 +124,7 @@ textual parts.")
(defstruct nnimap (defstruct nnimap
group process commands capabilities select-result newlinep server group process commands capabilities select-result newlinep server
last-command-time greeting examined) last-command-time greeting examined stream-type)
(defvar nnimap-object nil) (defvar nnimap-object nil)
@ -350,7 +350,7 @@ textual parts.")
login-result credentials) login-result credentials)
(when nnimap-server-port (when nnimap-server-port
(setq ports (append ports (list 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 (open-protocol-stream
"*nnimap*" (current-buffer) nnimap-address (car (last ports)) "*nnimap*" (current-buffer) nnimap-address (car (last ports))
:type nnimap-stream :type nnimap-stream
@ -362,6 +362,7 @@ textual parts.")
(when (gnus-string-match-p "STARTTLS" capabilities) (when (gnus-string-match-p "STARTTLS" capabilities)
"1 STARTTLS\r\n"))) "1 STARTTLS\r\n")))
(setf (nnimap-process nnimap-object) stream) (setf (nnimap-process nnimap-object) stream)
(setf (nnimap-stream-type nnimap-object) stream-type)
(if (not stream) (if (not stream)
(progn (progn
(nnheader-report 'nnimap "Unable to contact %s:%s via %s" (nnheader-report 'nnimap "Unable to contact %s:%s via %s"
@ -411,6 +412,12 @@ textual parts.")
(defun nnimap-login (user password) (defun nnimap-login (user password)
(cond (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") ((nnimap-capability "AUTH=CRAM-MD5")
(erase-buffer) (erase-buffer)
(let ((sequence (nnimap-send-command "AUTHENTICATE CRAM-MD5")) (let ((sequence (nnimap-send-command "AUTHENTICATE CRAM-MD5"))

View file

@ -105,13 +105,15 @@ command to switch on STARTTLS otherwise."
(funcall (intern (format "proto-stream-open-%s" type) obarray) (funcall (intern (format "proto-stream-open-%s" type) obarray)
name buffer host service parameters))) name buffer host service parameters)))
(if (null open-result) (if (null open-result)
(list nil nil nil) (list nil nil nil type)
(destructuring-bind (stream greeting capabilities) open-result (let ((stream (car open-result)))
(list (and stream (list (and stream
(memq (process-status stream) (memq (process-status stream)
'(open run)) '(open run))
stream) 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) (defun proto-stream-open-network-only (name buffer host service parameters)
(let ((start (with-current-buffer buffer (point))) (let ((start (with-current-buffer buffer (point)))
@ -119,7 +121,8 @@ command to switch on STARTTLS otherwise."
(list stream (list stream
(proto-stream-get-response (proto-stream-get-response
stream start (proto-stream-eoc parameters)) stream start (proto-stream-eoc parameters))
nil))) nil
'network)))
(defun proto-stream-open-network (name buffer host service parameters) (defun proto-stream-open-network (name buffer host service parameters)
(let* ((start (with-current-buffer buffer (point))) (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)) (greeting (proto-stream-get-response stream start eoc))
success) success)
(if (not capability-command) (if (not capability-command)
(list stream greeting nil) (list stream greeting nil 'network)
(let* ((capabilities (let* ((capabilities
(proto-stream-command stream capability-command eoc)) (proto-stream-command stream capability-command eoc))
(starttls-command (starttls-command
@ -148,7 +151,7 @@ command to switch on STARTTLS otherwise."
(delete-process stream) (delete-process stream)
nil) nil)
;; Otherwise, just return this plain network connection. ;; 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 ;; We have some kind of STARTTLS support, so we try to
;; upgrade the connection opportunistically. ;; upgrade the connection opportunistically.
((or (fboundp 'open-gnutls-stream) ((or (fboundp 'open-gnutls-stream)
@ -176,7 +179,7 @@ command to switch on STARTTLS otherwise."
(progn (progn
(delete-process stream) (delete-process stream)
nil) nil)
(list stream greeting capabilities))) (list stream greeting capabilities 'network)))
;; The server said it was OK to start doing STARTTLS negotiations. ;; The server said it was OK to start doing STARTTLS negotiations.
(if (fboundp 'open-gnutls-stream) (if (fboundp 'open-gnutls-stream)
(gnutls-negotiate stream nil) (gnutls-negotiate stream nil)
@ -193,7 +196,7 @@ command to switch on STARTTLS otherwise."
;; Re-get the capabilities, since they may have changed ;; Re-get the capabilities, since they may have changed
;; after switching to TLS. ;; after switching to TLS.
(list stream greeting (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 ;; We don't have STARTTLS support available, but the caller
;; requested a STARTTLS connection, so we give up. ;; requested a STARTTLS connection, so we give up.
((eq (cadr (memq :type parameters)) 'starttls) ((eq (cadr (memq :type parameters)) 'starttls)
@ -201,7 +204,7 @@ command to switch on STARTTLS otherwise."
nil) nil)
;; Fall back on using a plain network stream. ;; Fall back on using a plain network stream.
(t (t
(list stream greeting capabilities))))))) (list stream greeting capabilities 'network)))))))
(defun proto-stream-command (stream command eoc) (defun proto-stream-command (stream command eoc)
(let ((start (with-current-buffer (process-buffer stream) (point-max)))) (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) (when (re-search-forward (proto-stream-eoc parameters) nil t)
(goto-char (match-beginning 0)) (goto-char (match-beginning 0))
(delete-region (point-min) (line-beginning-position)))) (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) (defun proto-stream-open-shell (name buffer host service parameters)
(proto-stream-capability-open (proto-stream-capability-open
@ -255,16 +258,17 @@ command to switch on STARTTLS otherwise."
(format-spec-make (format-spec-make
?s host ?s host
?p service)))) ?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))) (let ((capability-command (cadr (memq :capability-command parameters)))
(greeting (proto-stream-get-response (greeting (proto-stream-get-response
stream start (proto-stream-eoc parameters)))) stream start (proto-stream-eoc parameters))))
(list stream greeting (list stream greeting
(and capability-command (and capability-command
(proto-stream-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) (defun proto-stream-eoc (parameters)
(or (cadr (memq :end-of-command parameters)) (or (cadr (memq :end-of-command parameters))