changeset 111745:c392bf1fd90c

* pop3.el (pop3-open-server): Read server greeting before starting TLS negotiation.
author Chong Yidong <cyd@stupidchicken.com>
date Fri, 19 Nov 2010 11:25:09 -0500
parents 32de8ce4db5b
children 62613ed5d53d
files lisp/gnus/ChangeLog lisp/gnus/pop3.el
diffstat 2 files changed, 16 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/gnus/ChangeLog	Wed Nov 17 22:44:35 2010 -0500
+++ b/lisp/gnus/ChangeLog	Fri Nov 19 11:25:09 2010 -0500
@@ -1,3 +1,8 @@
+2010-11-19  Yuri Karaban  <tech@askold.net>  (tiny change)
+
+	* pop3.el (pop3-open-server): Read server greeting before starting TLS
+	negotiation.
+
 2010-10-12  Juanma Barranquero  <lekktu@gmail.com>
 
 	* nnmail.el (nnmail-fancy-expiry-targets): Fix typo in docstring.
--- a/lisp/gnus/pop3.el	Wed Nov 17 22:44:35 2010 -0500
+++ b/lisp/gnus/pop3.el	Fri Nov 19 11:25:09 2010 -0500
@@ -259,21 +259,22 @@
 	      ;; gnutls-cli, openssl don't accept service names
 	      (if (equal port "pop3")
 		  (setq port 110))
-	      (let ((process (starttls-open-stream "POP" (current-buffer)
-						   mailhost (or port 110))))
-		(pop3-send-command process "STLS")
-		(let ((response (pop3-read-response process t)))
-		  (if (and response (string-match "+OK" response))
-		      (starttls-negotiate process)
-		    (pop3-quit process)
-		    (error "POP server doesn't support starttls")))
-		process))
-	     (t 
+	      ;; Delay STLS until server greeting is read (Bug#7438).
+	      (starttls-open-stream "POP" (current-buffer)
+				    mailhost (or port 110)))
+	     (t
 	      (open-network-stream "POP" (current-buffer) mailhost port))))
       (let ((response (pop3-read-response process t)))
 	(setq pop3-timestamp
 	      (substring response (or (string-match "<" response) 0)
 			 (+ 1 (or (string-match ">" response) -1)))))
+      (when (eq pop3-stream-type 'starttls)
+	(pop3-send-command process "STLS")
+	(let ((response (pop3-read-response process t)))
+	  (if (and response (string-match "+OK" response))
+	      (starttls-negotiate process)
+	    (pop3-quit process)
+	    (error "POP server doesn't support starttls"))))
       process)))
 
 ;; Support functions