From: Masahiro Tomita Date: 2009-10-09T23:01:58+09:00 Subject: [ruby-dev:39452] [Bug #2187] Net::IMAP::ResponseParseError Bug #2187: Net::IMAP::ResponseParseError http://redmine.ruby-lang.org/issues/show/2187 起票者: Masahiro Tomita ステータス: Open, 優先度: Normal ruby -v: ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux] とみたです。 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*] 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 ---------------------------------------- http://redmine.ruby-lang.org