Backport #2187
closedNet::IMAP::ResponseParseError
Description
=begin
とみたです。
RFC 3501 の resp-text-code は次のようになっていて atom だけでも OK なはずなのですが、
resp-text-code = "ALERT" /
"BADCHARSET" [SP "(" astring *(SP astring) ")" ] /
capability-data / "PARSE" /
"PERMANENTFLAGS" SP "("
[flag-perm (SP flag-perm)] ")" /
"READ-ONLY" / "READ-WRITE" / "TRYCREATE" /
"UIDNEXT" SP nz-number / "UIDVALIDITY" SP nz-number /
"UNSEEN" SP nz-number /
atom [SP 1<any TEXT-CHAR except "]">]
net/imapd.rb の ResponseParser#resp_text_code() は atom の後に SP と TEXT が
必須になってしまっていて、"* OK [CLOSED] Previous mailbox closed." のような応答で
エラーになってしまいます。
/usr/local/ruby-1.8.7/lib/ruby/1.8/net/imap.rb:3124:in `parse_error': unexpected token RBRA (expected SPACE) (Net::IMAP::ResponseParseError)
次のパッチで直ると思います。
イマイチ綺麗じゃないですけど…¶
Index: lib/net/imap.rb¶
--- lib/net/imap.rb (revision 25262)
+++ lib/net/imap.rb (working copy)
@@ -2764,7 +2764,10 @@
match(T_SPACE)
result = ResponseCode.new(name, number)
else
-
match(T_SPACE)
-
if match(T_SPACE, T_RBRA).symbol == T_RBRA
-
@lex_state = EXPR_RTEXT
-
return ResponseCode.new(name, nil)
-
end @lex_state = EXPR_CTEXT token = match(T_TEXT) @lex_state = EXPR_BEG
=end