mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/net/imap.rb (body_type_msg): should accept
message/delivery-status with extra data. [ruby-core:53741] [Bug #8167] * test/net/imap/test_imap_response_parser.rb: related test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
3c1b8a1b68
commit
3f927dec87
3 changed files with 70 additions and 20 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
Fri Apr 19 17:54:57 2013 Shugo Maeda <shugo@ruby-lang.org>
|
||||||
|
|
||||||
|
* lib/net/imap.rb (body_type_msg): should accept
|
||||||
|
message/delivery-status with extra data.
|
||||||
|
[ruby-core:53741] [Bug #8167]
|
||||||
|
|
||||||
|
* test/net/imap/test_imap_response_parser.rb: related test.
|
||||||
|
|
||||||
Fri Apr 19 13:03:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Fri Apr 19 13:03:14 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* marshal.c (w_object): do not dump encoding which is dumped with
|
* marshal.c (w_object): do not dump encoding which is dumped with
|
||||||
|
|
|
@ -2411,27 +2411,26 @@ module Net
|
||||||
match(T_SPACE)
|
match(T_SPACE)
|
||||||
param, content_id, desc, enc, size = body_fields
|
param, content_id, desc, enc, size = body_fields
|
||||||
|
|
||||||
# If this is not message/rfc822, we shouldn't apply the RFC822 spec
|
|
||||||
# to it.
|
|
||||||
# We should handle anything other than message/rfc822 using
|
|
||||||
# multipart extension data [rfc3501] (i.e. the data itself won't be
|
|
||||||
# returned, we would have to retrieve it with BODYSTRUCTURE instead
|
|
||||||
# of with BODY
|
|
||||||
if "#{mtype}/#{msubtype}" != 'MESSAGE/RFC822' then
|
|
||||||
return BodyTypeExtension.new(mtype, msubtype,
|
|
||||||
param, content_id,
|
|
||||||
desc, enc, size)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Also, sometimes a message/rfc822 is included as a large
|
|
||||||
# attachment instead of having all of the other details
|
|
||||||
# (e.g. attaching a .eml file to an email)
|
|
||||||
|
|
||||||
token = lookahead
|
token = lookahead
|
||||||
if token.symbol == T_RPAR then
|
if token.symbol == T_RPAR
|
||||||
return BodyTypeMessage.new(mtype, msubtype, param, content_id,
|
# If this is not message/rfc822, we shouldn't apply the RFC822
|
||||||
desc, enc, size, nil, nil, nil, nil,
|
# spec to it. We should handle anything other than
|
||||||
nil, nil, nil)
|
# message/rfc822 using multipart extension data [rfc3501] (i.e.
|
||||||
|
# the data itself won't be returned, we would have to retrieve it
|
||||||
|
# with BODYSTRUCTURE instead of with BODY
|
||||||
|
|
||||||
|
# Also, sometimes a message/rfc822 is included as a large
|
||||||
|
# attachment instead of having all of the other details
|
||||||
|
# (e.g. attaching a .eml file to an email)
|
||||||
|
if msubtype == "RFC822"
|
||||||
|
return BodyTypeMessage.new(mtype, msubtype, param, content_id,
|
||||||
|
desc, enc, size, nil, nil, nil, nil,
|
||||||
|
nil, nil, nil)
|
||||||
|
else
|
||||||
|
return BodyTypeExtension.new(mtype, msubtype,
|
||||||
|
param, content_id,
|
||||||
|
desc, enc, size)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
match(T_SPACE)
|
match(T_SPACE)
|
||||||
|
|
|
@ -180,4 +180,47 @@ EOF
|
||||||
* 1038 FETCH (BODY ("MIXED"))
|
* 1038 FETCH (BODY ("MIXED"))
|
||||||
EOF
|
EOF
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# [Bug #8167]
|
||||||
|
def test_msg_delivery_status_with_extra_data
|
||||||
|
parser = Net::IMAP::ResponseParser.new
|
||||||
|
response = parser.parse(<<EOF.gsub(/\n/, "\r\n").taint)
|
||||||
|
* 29021 FETCH (RFC822.SIZE 3162 UID 113622 RFC822.HEADER {1155}
|
||||||
|
Return-path: <>
|
||||||
|
Envelope-to: info@xxxxxxxx.si
|
||||||
|
Delivery-date: Tue, 26 Mar 2013 12:42:58 +0100
|
||||||
|
Received: from mail by xxxx.xxxxxxxxxxx.net with spam-scanned (Exim 4.76)
|
||||||
|
id 1UKSHI-000Cwl-AR
|
||||||
|
for info@xxxxxxxx.si; Tue, 26 Mar 2013 12:42:58 +0100
|
||||||
|
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on xxxx.xxxxxxxxxxx.net
|
||||||
|
X-Spam-Level: **
|
||||||
|
X-Spam-Status: No, score=2.1 required=7.0 tests=DKIM_ADSP_NXDOMAIN,RDNS_NONE
|
||||||
|
autolearn=no version=3.3.1
|
||||||
|
Received: from [xx.xxx.xxx.xx] (port=56890 helo=xxxxxx.localdomain)
|
||||||
|
by xxxx.xxxxxxxxxxx.net with esmtp (Exim 4.76)
|
||||||
|
id 1UKSHI-000Cwi-9j
|
||||||
|
for info@xxxxxxxx.si; Tue, 26 Mar 2013 12:42:56 +0100
|
||||||
|
Received: by xxxxxx.localdomain (Postfix)
|
||||||
|
id 72725BEA64A; Tue, 26 Mar 2013 12:42:55 +0100 (CET)
|
||||||
|
Date: Tue, 26 Mar 2013 12:42:55 +0100 (CET)
|
||||||
|
From: MAILER-DAEMON@xxxxxx.localdomain (Mail Delivery System)
|
||||||
|
Subject: Undelivered Mail Returned to Sender
|
||||||
|
To: info@xxxxxxxx.si
|
||||||
|
Auto-Submitted: auto-replied
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: multipart/report; report-type=delivery-status;
|
||||||
|
boundary="27797BEA649.1364298175/xxxxxx.localdomain"
|
||||||
|
Message-Id: <20130326114255.72725BEA64A@xxxxxx.localdomain>
|
||||||
|
|
||||||
|
BODYSTRUCTURE (("text" "plain" ("charset" "us-ascii") NIL "Notification" "7bit" 510 14 NIL NIL NIL NIL)("message" "delivery-status" NIL NIL "Delivery report" "7bit" 410 NIL NIL NIL NIL)("text" "rfc822-headers" ("charset" "us-ascii") NIL "Undelivered Message Headers" "7bit" 612 15 NIL NIL NIL NIL) "report" ("report-type" "delivery-status" "boundary" "27797BEA649.1364298175/xxxxxx.localdomain") NIL NIL NIL))
|
||||||
|
EOF
|
||||||
|
delivery_status = response.data.attr["BODYSTRUCTURE"].parts[1]
|
||||||
|
assert_equal("MESSAGE", delivery_status.media_type)
|
||||||
|
assert_equal("DELIVERY-STATUS", delivery_status.subtype)
|
||||||
|
assert_equal(nil, delivery_status.param)
|
||||||
|
assert_equal(nil, delivery_status.content_id)
|
||||||
|
assert_equal("Delivery report", delivery_status.description)
|
||||||
|
assert_equal("7BIT", delivery_status.encoding)
|
||||||
|
assert_equal(410, delivery_status.size)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue