diff options
-rw-r--r-- | ChangeLog | 17 | ||||
-rw-r--r-- | lib/net/http.rb | 12 | ||||
-rw-r--r-- | lib/net/pop.rb | 13 | ||||
-rw-r--r-- | lib/net/smtp.rb | 18 |
4 files changed, 51 insertions, 9 deletions
@@ -1,3 +1,20 @@ +Tue Sep 30 03:12:02 2003 Minero Aoki <aamine@loveruby.net> + + * lib/net/http.rb (finish): revert to 1.93. + + * lib/net/pop.rb (finish): revert to 1.60. + + * lib/net/smtp.rb (finish): revert to 1.67. + + * lib/net/http.rb (do_start): ensure to close socket if failed to + start session. + + * lib/net/pop.rb (do_start): ditto. + + * lib/net/smtp.rb (do_start): ditto. + + * lib/net/smtp.rb: SMTP#started? wrongly returned false always. + Tue Sep 30 02:54:49 2003 Minero Aoki <aamine@loveruby.net> * test/ruby/test_iterator.rb: new test diff --git a/lib/net/http.rb b/lib/net/http.rb index bb4934be6f..684e55f8db 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -416,7 +416,7 @@ module Net # :nodoc: do_start return yield(self) ensure - finish + do_finish end end do_start @@ -437,12 +437,18 @@ module Net # :nodoc: private :on_connect # Finishes HTTP session and closes TCP connection. + # Raises IOError if not started. def finish + raise IOError, 'HTTP session not started yet' unless started? + do_finish + end + + def do_finish + @started = false @socket.close if @socket and not @socket.closed? @socket = nil - @started = false - nil end + private :do_finish # # proxy 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' \ diff --git a/lib/net/smtp.rb b/lib/net/smtp.rb index b14d43832a..21c04812fe 100644 --- a/lib/net/smtp.rb +++ b/lib/net/smtp.rb @@ -331,7 +331,7 @@ module Net # :nodoc: do_start(helo, user, secret, authtype) return yield(self) ensure - finish + do_finish end else do_start(helo, user, secret, authtype) @@ -362,17 +362,28 @@ module Net # :nodoc: raise end authenticate user, secret, authtype if user + @started = true + ensure + @socket.close if not @started and @socket and not @socket.closed? end private :do_start # Finishes the SMTP session and closes TCP connection. + # Raises IOError if not started. def finish + raise IOError, 'not started yet' unless started? + do_finish + end + + def do_finish quit if @socket and not @socket.closed? and not @error_occured + ensure + @started = false + @error_occured = false @socket.close if @socket and not @socket.closed? @socket = nil - @error_occured = false - @started = false end + private :do_finish # # message send @@ -623,4 +634,3 @@ module Net # :nodoc: SMTPSession = SMTP end # module Net - |