Skip to content

Commit 948d922

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 a1567f8 commit 948d922

1 file changed

Lines changed: 8 additions & 6 deletions

File tree

lib/net/imap.rb

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

22232223
def get_response
22242224
buff = String.new
2225-
while true
2226-
get_response_line(buff) or break
2227-
break unless /\{(\d+)\}\r\n\z/n =~ buff
2228-
get_response_literal(buff, $1.to_i) or break
2225+
catch :eof do
2226+
while true
2227+
get_response_line(buff)
2228+
break unless /\{(\d+)\}\r\n\z/n =~ buff
2229+
get_response_literal(buff, $1.to_i)
2230+
end
22292231
end
22302232
return nil if buff.length == 0
22312233
$stderr.print(buff.gsub(/^/n, "S: ")) if @@debug
22322234
@parser.parse(buff)
22332235
end
22342236

22352237
def get_response_line(buff)
2236-
line = @sock.gets(CRLF) or return
2238+
line = @sock.gets(CRLF) or throw :eof
22372239
buff << line
22382240
end
22392241

22402242
def get_response_literal(buff, literal_size)
22412243
literal = String.new(capacity: literal_size)
2242-
@sock.read(literal_size, literal) or return
2244+
@sock.read(literal_size, literal) or throw :eof
22432245
buff << literal
22442246
end
22452247

0 commit comments

Comments
 (0)