Skip to content

Commit 02f1cfa

Browse files
committed
♻️ Explicitly "throw :eof" for EOF in get_response
This feels a lot more self-documenting than returning nil then breaking when nil is returned. Also, it lets me refactor the return values for the get_response_line/get_response_literal methods, or throw from even deeper in the stack.
1 parent 85cb7c7 commit 02f1cfa

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

lib/net/imap.rb

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3433,24 +3433,26 @@ def get_tagged_response(tag, cmd, timeout = nil)
34333433

34343434
def get_response
34353435
buff = String.new
3436-
while true
3437-
get_response_line(buff) or break
3438-
break unless /\{(\d+)\}\r\n\z/n =~ buff
3439-
get_response_literal(buff, $1.to_i) or break
3436+
catch :eof do
3437+
while true
3438+
get_response_line(buff)
3439+
break unless /\{(\d+)\}\r\n\z/n =~ buff
3440+
get_response_literal(buff, $1.to_i)
3441+
end
34403442
end
34413443
return nil if buff.length == 0
34423444
$stderr.print(buff.gsub(/^/n, "S: ")) if config.debug?
34433445
@parser.parse(buff)
34443446
end
34453447

34463448
def get_response_line(buff)
3447-
line = @sock.gets(CRLF) or return
3449+
line = @sock.gets(CRLF) or throw :eof
34483450
buff << line
34493451
end
34503452

34513453
def get_response_literal(buff, literal_size)
34523454
literal = String.new(capacity: literal_size)
3453-
@sock.read(literal_size, literal) or return
3455+
@sock.read(literal_size, literal) or throw :eof
34543456
buff << literal
34553457
end
34563458

0 commit comments

Comments
 (0)