summaryrefslogtreecommitdiff
path: root/lib/net/pop.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/net/pop.rb')
-rw-r--r--lib/net/pop.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/net/pop.rb b/lib/net/pop.rb
index 00a7af2bdb..5ada68fd4d 100644
--- a/lib/net/pop.rb
+++ b/lib/net/pop.rb
@@ -415,7 +415,7 @@ module Net
do_start account, password
return yield(self)
ensure
- finish
+ do_finish
end
else
do_start account, password
@@ -434,6 +434,8 @@ module Net
@command.auth account, password
end
@started = true
+ ensure
+ do_finish if not @started
end
private :do_start
@@ -443,13 +445,20 @@ module Net
# Finishes a POP3 session and closes TCP connection.
def finish
+ raise IOError, 'POP session not started yet' unless started?
+ do_finish
+ end
+
+ def do_finish
@mails = nil
@command.quit if @command
+ ensure
+ @started = false
@command = nil
@socket.close if @socket and not @socket.closed?
@socket = nil
- @started = false
end
+ private :do_finish
def command
raise IOError, 'POP session not opened yet' \