changeset 111872:a264bb877bc7

Merge changes made in Gnus trunk. nnir.el (nnir-request-expire-articles): Only allow article deletion. message.el (message-bogus-recipient-p): Set address to "" if nil. gnus-gravatar.el (gnus-gravatar-transform-address): Fix error when email address is nil. proto-stream.el (proto-stream-open-network-only): New function to have a way to specify non-STARTTLS upgrade connections.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Sat, 11 Dec 2010 01:27:14 +0000
parents d21197a7fc63
children 2e087a5593f8
files doc/misc/gnus.texi lisp/gnus/ChangeLog lisp/gnus/gnus-gravatar.el lisp/gnus/message.el lisp/gnus/nnir.el lisp/gnus/nntp.el lisp/gnus/proto-stream.el
diffstat 7 files changed, 66 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/doc/misc/gnus.texi	Fri Dec 10 23:42:17 2010 +0100
+++ b/doc/misc/gnus.texi	Sat Dec 11 01:27:14 2010 +0000
@@ -14445,6 +14445,9 @@
 connection will be upgraded to an encrypted @acronym{STARTTLS}
 connection automatically.
 
+@item network-only
+The same as the above, but don't do automatic @acronym{STARTTLS} upgrades.
+
 @findex nntp-open-tls-stream
 @item nntp-open-tls-stream
 Opens a connection to a server over a @dfn{secure} channel.  To use
--- a/lisp/gnus/ChangeLog	Fri Dec 10 23:42:17 2010 +0100
+++ b/lisp/gnus/ChangeLog	Sat Dec 11 01:27:14 2010 +0000
@@ -1,3 +1,21 @@
+2010-12-10  Lars Magne Ingebrigtsen  <larsi@gnus.org>
+
+	* proto-stream.el (proto-stream-open-network-only): New function to
+	have a way to specify non-STARTTLS upgrade connections.
+
+2010-12-10  Julien Danjou  <julien@danjou.info>
+
+	* gnus-gravatar.el (gnus-gravatar-transform-address): Fix error when
+	email address is nil.
+
+	* message.el (message-bogus-recipient-p): Set address to "" if nil.
+
+2010-12-10  Andrew Cohen  <cohen@andy.bu.edu>
+
+	* nnir.el (nnir-request-expire-articles): Ignore expiry except for
+	deletion.
+	(nnir-run-imap): Only need to parse list once.
+
 2010-12-09  Lars Magne Ingebrigtsen  <larsi@gnus.org>
 
 	* shr.el (shr-tag-script): Ignore <script>.
--- a/lisp/gnus/gnus-gravatar.el	Fri Dec 10 23:42:17 2010 +0100
+++ b/lisp/gnus/gnus-gravatar.el	Sat Dec 11 01:27:14 2010 +0000
@@ -65,7 +65,7 @@
 	(when (or force
 		  (not (and gnus-gravatar-too-ugly
 			    (or (string-match gnus-gravatar-too-ugly
-					      (cadr address))
+					      (or (cadr address) ""))
 				(and name
 				     (string-match gnus-gravatar-too-ugly
 						   name))))))
--- a/lisp/gnus/message.el	Fri Dec 10 23:42:17 2010 +0100
+++ b/lisp/gnus/message.el	Sat Dec 11 01:27:14 2010 +0000
@@ -4261,9 +4261,10 @@
   ;; FIXME: How about "foo@subdomain", when the MTA adds ".domain.tld"?
   (let (found)
     (mapc (lambda (address)
-	    (setq address (cadr address))
+	    (setq address (or (cadr address) ""))
 	    (when
-		(or (not
+		(or (string= "" address)
+                    (not
 		     (or
 		      (not (string-match "@" address))
 		      (string-match
@@ -4277,7 +4278,7 @@
 					       "\\|")
 				  message-bogus-addresses)))
 			   (string-match re address))))
-			 (push address found)))
+              (push address found)))
 	  ;;
 	  (mail-extract-address-components recipients t))
     found))
--- a/lisp/gnus/nnir.el	Fri Dec 10 23:42:17 2010 +0100
+++ b/lisp/gnus/nnir.el	Sat Dec 11 01:27:14 2010 +0000
@@ -688,23 +688,25 @@
 	  (gnus-group-real-name to-newsgroup)))))
 
 (deffoo nnir-request-expire-articles (articles group &optional server force)
-  (let ((articles-by-group (nnir-categorize
-			    articles nnir-article-group nnir-article-ids))
-	not-deleted)
-    (while (not (null articles-by-group))
-      (let* ((group-articles (pop articles-by-group))
-	     (artgroup (car group-articles))
-	     (articleids (cadr group-articles))
-	     (artlist (sort (mapcar 'cdr articleids) '<)))
-	(unless (gnus-check-backend-function 'request-expire-articles
-					     artgroup)
-	  (error "The group %s does not support article deletion" artgroup))
-	(unless (gnus-check-server (gnus-find-method-for-group artgroup))
-	  (error "Couldn't open server for group %s" artgroup))
-	(push (gnus-request-expire-articles
-	       artlist artgroup force)
-	      not-deleted)))
-    (sort (delq nil not-deleted) '<)))
+  (if force
+    (let ((articles-by-group (nnir-categorize
+			      articles nnir-article-group nnir-article-ids))
+	  not-deleted)
+      (while (not (null articles-by-group))
+	(let* ((group-articles (pop articles-by-group))
+	       (artgroup (car group-articles))
+	       (articleids (cadr group-articles))
+	       (artlist (sort (mapcar 'cdr articleids) '<)))
+	  (unless (gnus-check-backend-function 'request-expire-articles
+					       artgroup)
+	    (error "The group %s does not support article deletion" artgroup))
+	  (unless (gnus-check-server (gnus-find-method-for-group artgroup))
+	    (error "Couldn't open server for group %s" artgroup))
+	  (push (gnus-request-expire-articles
+		 artlist artgroup force)
+		not-deleted)))
+      (sort (delq nil not-deleted) '<))
+    articles))
 
 (deffoo nnir-warp-to-article ()
   (let* ((cur (if (> (gnus-summary-article-number) 0)
@@ -792,12 +794,13 @@
 						    (nnir-imap-make-query
 						     criteria qstring)))))
 		      (mapc
-		       (lambda (artnum) (push (vector group artnum 100) artlist)
-			 (setq arts (1+ arts)))
-		       (and (car result)
-			    (delete 0 (mapcar #'string-to-number
-					      (cdr (assoc "SEARCH"
-							  (cdr result)))))))
+		       (lambda (artnum)
+			 (let ((artn (string-to-number artnum)))
+			   (when (> artn 0)
+			     (push (vector group artn 100)
+				   artlist)
+			     (setq arts (1+ arts)))))
+		       (and (car result) (cdr (assoc "SEARCH" (cdr result)))))
 		      (message "Searching %s... %d matches" group arts)))
 		  (message "Searching %s...done" group))
 	      (quit nil))
@@ -1581,8 +1584,10 @@
 	  (or nnir-summary-line-format gnus-summary-line-format))
     (remove-hook 'gnus-summary-article-delete-hook 'gnus-registry-action t)
     (remove-hook 'gnus-summary-article-move-hook 'gnus-registry-action t)
+    (remove-hook 'gnus-summary-article-expire-hook 'gnus-registry-action t)
     (add-hook 'gnus-summary-article-delete-hook 'nnir-registry-action t t)
-    (add-hook 'gnus-summary-article-move-hook 'nnir-registry-action t t)))
+    (add-hook 'gnus-summary-article-move-hook 'nnir-registry-action t t)
+    (add-hook 'gnus-summary-article-expire-hook 'nnir-registry-action t t)))
 
 
 
--- a/lisp/gnus/nntp.el	Fri Dec 10 23:42:17 2010 +0100
+++ b/lisp/gnus/nntp.el	Sat Dec 11 01:27:14 2010 +0000
@@ -87,6 +87,8 @@
 
 Direct connections:
 - `nntp-open-network-stream' (the default),
+- `network-only' (the same as the above, but don't do automatic
+  STARTTLS upgrades).
 - `nntp-open-ssl-stream',
 - `nntp-open-tls-stream',
 - `nntp-open-netcat-stream'.
@@ -1267,6 +1269,7 @@
 	      (let ((coding-system-for-read nntp-coding-system-for-read)
 		    (coding-system-for-write nntp-coding-system-for-write)
 		    (map '((nntp-open-network-stream network)
+			   (network-only network-only)
 			   (nntp-open-ssl-stream tls)
 			   (nntp-open-tls-stream tls))))
 		(if (assoc nntp-open-connection-function map)
--- a/lisp/gnus/proto-stream.el	Fri Dec 10 23:42:17 2010 +0100
+++ b/lisp/gnus/proto-stream.el	Sat Dec 11 01:27:14 2010 +0000
@@ -75,10 +75,11 @@
 The PARAMETERS is a keyword list that can have the following
 values:
 
-:type -- either `network', `tls', `shell' or `starttls'.  If
-omitted, the default is `network'.  `network' will be
-opportunistically upgraded to STARTTLS if both the server and
-Emacs supports it.
+:type -- either `network', `network-only, `tls', `shell' or
+`starttls'.  If omitted, the default is `network'.  `network'
+will be opportunistically upgraded to STARTTLS if both the server
+and Emacs supports it.  If you don't want STARTTLS upgrades, use
+`network-only'.
 
 :end-of-command -- a regexp saying what the end of a command is.
 This defaults to \"\\n\".
@@ -109,6 +110,9 @@
 		 stream)
 	    greeting capabilities))))
 
+(defun proto-stream-open-network-only (name buffer host service parameters)
+  (open-network-stream name buffer host service))
+
 (defun proto-stream-open-network (name buffer host service parameters)
   (let* ((start (with-current-buffer buffer (point)))
 	 (stream (open-network-stream name buffer host service))