GNU bug report logs - #7438
23.2; [PATCH] lisp/gnus/pop3.el fix STLS command ordering

Previous Next

Packages: gnus, emacs;

Reported by: Yuri Karaban <tech <at> askold.net>

Date: Thu, 18 Nov 2010 23:08:01 UTC

Severity: normal

Tags: patch

Found in version 23.2

Done: Chong Yidong <cyd <at> stupidchicken.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Yuri Karaban <tech <at> askold.net>
To: 7438 <at> debbugs.gnu.org
Subject: bug#7438: 23.2; [PATCH] lisp/gnus/pop3.el fix STLS command ordering
Date: Fri, 19 Nov 2010 00:59:54 +0200
[Message part 1 (text/plain, inline)]
Hi

Starttls (STLS) is not working with pop3.

There is a bug in current implementation.

Current implementation sends STLS just after opening connection.

As result connection hangs (pop3.el tries to read a greeting message
after STLS, but all POP3 servers I tried does not send anything after
successful negotiation). On other hand, ignoring server greeting leads
to mistreating server greeting (+OK <timestamp>) as successful response
to STLS command. In this case negotiation starts too early (before
reading real response to STLS).

I've attached a patch which fixes the problem. The server greeting got
read first (as with plain POP3) and only after receiving greeting STLS
issued and TLS negotiation starts.

I hope much this would be fixed in next minor release of emacs.

Thanks!

[pop3.el-stls-order.patch (text/x-patch, inline)]
--- pop3.el.orig	2010-04-04 01:26:09.000000000 +0300
+++ pop3.el	2010-11-19 00:21:53.106967116 +0200
@@ -261,12 +261,6 @@
 		  (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 
 	      (open-network-stream "POP" (current-buffer) mailhost port))))
@@ -274,6 +268,13 @@
 	(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
[Message part 3 (text/plain, inline)]
-- 
Citius Altius Fortius

This bug report was last modified 14 years and 190 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.