[前][次][番号順一覧][スレッド一覧]

ruby-changes:34415

From: nagachika <ko1@a...>
Date: Mon, 23 Jun 2014 01:54:12 +0900 (JST)
Subject: [ruby-changes:34415] nagachika:r46496 (ruby_2_1): merge revision(s) r46060: [Backport #9627]

nagachika	2014-06-23 01:53:59 +0900 (Mon, 23 Jun 2014)

  New Revision: 46496

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=46496

  Log:
    merge revision(s) r46060: [Backport #9627]
    
    * net/protocol.rb (using_each_crlf_line): fix SMTP dot-stuffing
      for messages not ending with a new-line.
      [ruby-core:61441] [Bug #9627] [fix GH-616]

  Modified directories:
    branches/ruby_2_1/
  Modified files:
    branches/ruby_2_1/ChangeLog
    branches/ruby_2_1/lib/net/protocol.rb
    branches/ruby_2_1/test/net/protocol/test_protocol.rb
    branches/ruby_2_1/version.h
Index: ruby_2_1/ChangeLog
===================================================================
--- ruby_2_1/ChangeLog	(revision 46495)
+++ ruby_2_1/ChangeLog	(revision 46496)
@@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_1/ChangeLog#L1
+Mon Jun 23 01:53:18 2014  Josh Goebel  <dreamer3@g...>
+
+	* net/protocol.rb (using_each_crlf_line): fix SMTP dot-stuffing
+	  for messages not ending with a new-line.
+	  [ruby-core:61441] [Bug #9627] [fix GH-616]
+
 Fri Jun 20 00:40:06 2014  Nobuyoshi Nakada  <nobu@r...>
 
 	* thread_pthread.c (ruby_init_stack, ruby_stack_overflowed_p):
Index: ruby_2_1/lib/net/protocol.rb
===================================================================
--- ruby_2_1/lib/net/protocol.rb	(revision 46495)
+++ ruby_2_1/lib/net/protocol.rb	(revision 46496)
@@ -267,7 +267,7 @@ module Net # :nodoc: https://github.com/ruby/ruby/blob/trunk/ruby_2_1/lib/net/protocol.rb#L267
     def write_message_0(src)
       prev = @written_bytes
       each_crlf_line(src) do |line|
-        write0 line.sub(/\A\./, '..')
+        write0 dot_stuff(line)
       end
       @written_bytes - prev
     end
@@ -308,11 +308,15 @@ module Net # :nodoc: https://github.com/ruby/ruby/blob/trunk/ruby_2_1/lib/net/protocol.rb#L308
 
     private
 
+    def dot_stuff(s)
+      s.sub(/\A\./, '..')
+    end
+
     def using_each_crlf_line
       @wbuf = ''
       yield
       if not @wbuf.empty?   # unterminated last line
-        write0 @wbuf.chomp + "\r\n"
+        write0 dot_stuff(@wbuf.chomp) + "\r\n"
       elsif @written_bytes == 0   # empty src
         write0 "\r\n"
       end
Index: ruby_2_1/version.h
===================================================================
--- ruby_2_1/version.h	(revision 46495)
+++ ruby_2_1/version.h	(revision 46496)
@@ -1,10 +1,10 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_1/version.h#L1
 #define RUBY_VERSION "2.1.2"
-#define RUBY_RELEASE_DATE "2014-06-20"
-#define RUBY_PATCHLEVEL 134
+#define RUBY_RELEASE_DATE "2014-06-23"
+#define RUBY_PATCHLEVEL 135
 
 #define RUBY_RELEASE_YEAR 2014
 #define RUBY_RELEASE_MONTH 6
-#define RUBY_RELEASE_DAY 20
+#define RUBY_RELEASE_DAY 23
 
 #include "ruby/version.h"
 
Index: ruby_2_1/test/net/protocol/test_protocol.rb
===================================================================
--- ruby_2_1/test/net/protocol/test_protocol.rb	(revision 46495)
+++ ruby_2_1/test/net/protocol/test_protocol.rb	(revision 46496)
@@ -3,6 +3,15 @@ require "net/protocol" https://github.com/ruby/ruby/blob/trunk/ruby_2_1/test/net/protocol/test_protocol.rb#L3
 require "stringio"
 
 class TestProtocol < Test::Unit::TestCase
+  def test_should_properly_dot_stuff_period_with_no_endline
+    bug9627 = '[ruby-core:61441] [Bug #9627]'
+    sio = StringIO.new("")
+    imio = Net::InternetMessageIO.new(sio)
+    email = "To: bob@a...\nlook, a period with no endline\n."
+    imio.write_message(email)
+    assert_equal("To: bob@a...\r\nlook, a period with no endline\r\n..\r\n.\r\n", sio.string, bug9627)
+  end
+
   def test_each_crlf_line
     assert_output('', '') do
       sio = StringIO.new("")

Property changes on: ruby_2_1
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r46060


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]