Issue #5620 has been updated by Koichi Sasada.

Category set to lib
Assignee set to Shugo Maeda


----------------------------------------
Bug #5620: (Net::IMAP::ResponseParseError) unexpected token LBRA (expected SPACE)
https://bugs.ruby-lang.org/issues/5620

Author: art  lussos
Status: Open
Priority: Normal
Assignee: Shugo Maeda
Category: lib
Target version: 
ruby -v: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin10.8.0]


We have a found an issue with one of the IMAP servers ( IMAP4rev1) we connect to:

(Net::IMAP::ResponseParseError) unexpected token LBRA (expected SPACE)

.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/imap.rb:3235:in `parse_error'
.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/imap.rb:3087:in `match'
.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/net/imap.rb:2226:in `rfc822_text'

What is happening is that this mail server is sending down:
  RFC822[] {7000} when we FETCH RFC822, instead of the expected RFC822 {7000} -- notice the []

What I propose is that when we have a loop looking for the space and skip LBRA or T_RBRA.

In imap.rb

def rfc822_text
  token = match(T_ATOM)

  name = token.value.upcase
  while true
    token = lookahead
    case token.symbol
    when T_LBRA, T_RBRA
      shift_token
    when T_SPACE
      shift_token
      break
    else
      parse_error("unexpected token %s", token.symbol)
    end
  end

  return name, nstring
end



-- 
http://bugs.ruby-lang.org/