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

ruby-changes:34434

From: usa <ko1@a...>
Date: Mon, 23 Jun 2014 18:36:12 +0900 (JST)
Subject: [ruby-changes:34434] usa:r46515 (ruby_2_0_0): merge revision(s) 46060: [Backport #9627]

usa	2014-06-23 18:36:03 +0900 (Mon, 23 Jun 2014)

  New Revision: 46515

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

  Log:
    merge revision(s) 46060: [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_0_0/
  Modified files:
    branches/ruby_2_0_0/ChangeLog
    branches/ruby_2_0_0/lib/net/protocol.rb
    branches/ruby_2_0_0/test/net/protocol/test_protocol.rb
    branches/ruby_2_0_0/version.h
Index: ruby_2_0_0/ChangeLog
===================================================================
--- ruby_2_0_0/ChangeLog	(revision 46514)
+++ ruby_2_0_0/ChangeLog	(revision 46515)
@@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/ChangeLog#L1
+Mon Jun 23 18:35:34 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]
+
 Mon Jun 23 18:16:07 2014  Hiroshi Shirosaki  <h.shirosaki@g...>
 
 	* configure.in: enable SSE2 on mingw. target='i386-pc-mingw32'.
Index: ruby_2_0_0/lib/net/protocol.rb
===================================================================
--- ruby_2_0_0/lib/net/protocol.rb	(revision 46514)
+++ ruby_2_0_0/lib/net/protocol.rb	(revision 46515)
@@ -267,7 +267,7 @@ module Net # :nodoc: https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/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_0_0/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_0_0/version.h
===================================================================
--- ruby_2_0_0/version.h	(revision 46514)
+++ ruby_2_0_0/version.h	(revision 46515)
@@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/version.h#L1
 #define RUBY_VERSION "2.0.0"
 #define RUBY_RELEASE_DATE "2014-06-23"
-#define RUBY_PATCHLEVEL 495
+#define RUBY_PATCHLEVEL 496
 
 #define RUBY_RELEASE_YEAR 2014
 #define RUBY_RELEASE_MONTH 6
Index: ruby_2_0_0/test/net/protocol/test_protocol.rb
===================================================================
--- ruby_2_0_0/test/net/protocol/test_protocol.rb	(revision 46514)
+++ ruby_2_0_0/test/net/protocol/test_protocol.rb	(revision 46515)
@@ -3,6 +3,15 @@ require "net/protocol" https://github.com/ruby/ruby/blob/trunk/ruby_2_0_0/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_0_0
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r46060


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

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