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

ruby-changes:38363

From: shugo <ko1@a...>
Date: Fri, 8 May 2015 15:46:27 +0900 (JST)
Subject: [ruby-changes:38363] shugo:r50444 (trunk): * lib/net/imap.rb (body_ext_mpart): should work even if body-fld-dsp

shugo	2015-05-08 15:46:18 +0900 (Fri, 08 May 2015)

  New Revision: 50444

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

  Log:
    * lib/net/imap.rb (body_ext_mpart): should work even if body-fld-dsp
      is omitted.  [ruby-core:69093] [Bug #11128]

  Modified files:
    trunk/ChangeLog
    trunk/lib/net/imap.rb
    trunk/test/net/imap/test_imap_response_parser.rb
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 50443)
+++ ChangeLog	(revision 50444)
@@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Fri May  8 15:43:11 2015  Shugo Maeda  <shugo@r...>
+
+	* lib/net/imap.rb (body_ext_mpart): should work even if body-fld-dsp
+	  is omitted.  [ruby-core:69093] [Bug #11128]
+
 Fri May  8 15:05:57 2015  SHIBATA Hiroshi  <hsbt@r...>
 
 	* doc/syntax/control_expressions.rdoc: fix a missing "a"
Index: lib/net/imap.rb
===================================================================
--- lib/net/imap.rb	(revision 50443)
+++ lib/net/imap.rb	(revision 50444)
@@ -2639,7 +2639,13 @@ module Net https://github.com/ruby/ruby/blob/trunk/lib/net/imap.rb#L2639
           return param
         end
         disposition = body_fld_dsp
-        match(T_SPACE)
+
+        token = lookahead
+        if token.symbol == T_SPACE
+          shift_token
+        else
+          return param, disposition
+        end
         language = body_fld_lang
 
         token = lookahead
Index: test/net/imap/test_imap_response_parser.rb
===================================================================
--- test/net/imap/test_imap_response_parser.rb	(revision 50443)
+++ test/net/imap/test_imap_response_parser.rb	(revision 50444)
@@ -276,4 +276,17 @@ EOF https://github.com/ruby/ruby/blob/trunk/test/net/imap/test_imap_response_parser.rb#L276
     assert_equal("SEARCH", response.name)
     assert_equal([87216, 87221], response.data)
   end
+
+  # [Bug #11128]
+  def test_body_ext_mpart_without_lang
+    parser = Net::IMAP::ResponseParser.new
+    response = parser.parse("* 4 FETCH (BODY (((\"text\" \"plain\" (\"charset\" \"utf-8\") NIL NIL \"7bit\" 257 9 NIL NIL NIL NIL)(\"text\" \"html\" (\"charset\" \"utf-8\") NIL NIL \"quoted-printable\" 655 9 NIL NIL NIL NIL) \"alternative\" (\"boundary\" \"001a1137a5047848dd05157ddaa1\") NIL)(\"application\" \"pdf\" (\"name\" \"test.xml\" \"x-apple-part-url\" \"9D00D9A2-98AB-4EFB-85BA-FB255F8BF3D7\") NIL NIL \"base64\" 4383638 NIL (\"attachment\" (\"filename\" \"test.xml\")) NIL NIL) \"mixed\" (\"boundary\" \"001a1137a5047848e405157ddaa3\") NIL))\r\n")
+    assert_equal("FETCH", response.name)
+    body = response.data.attr["BODY"]
+    assert_equal(nil, body.parts[0].disposition)
+    assert_equal(nil, body.parts[0].language)
+    assert_equal("ATTACHMENT", body.parts[1].disposition.dsp_type)
+    assert_equal("test.xml", body.parts[1].disposition.param["FILENAME"])
+    assert_equal(nil, body.parts[1].language)
+  end
 end

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

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